Chapter 1. Red Hat JBoss Fuse Overview

Abstract

Red Hat JBoss Fuse is an open source Enterprise Service Bus (ESB) that focuses on mediating, transforming, and routing data across multiple applications, services, or devices for both internal systems and external services. By implementing the Open Source Gateway initiative (OSGi) specification it allows bundles, or modules of functionality, to be loosely coupled and highly reusable; in addition, bundles may be remotely installed, started, stopped, updated, and uninstalled without rebooting, and multiple versions of each bundle may run simultaneously.
Though no canonical definition of an ESB exists, David Chappell states in his book Enterprise Server Bus,
 
An ESB is a standards-based integration platform that combines messaging, web services, data transformation, and intelligent routing to reliably connect and coordinate the interaction of significant numbers of diverse applications across extended enterprises with transactional integrity.
 
 --David A. Chapell
An ESB simplifies the complexity of integration by providing a single, standards-based infrastructure into which applications can be plugged. Once plugged into the ESB, an application or service has access to all of the infrastructure services provided by the ESB and can access any other applications that are also plugged into the ESB. For example, you could plug a billing system based on JMS into an ESB and use the ESBs transport mediation features to expose the billing system over the Web using SOAP/HTTP. You could also route internal purchase orders directly into the billing system by plugging the Purchase Order system into the ESB.

1.1. Components

Apache Camel

Red Hat JBoss Fuse utilizes Apache Camel for building integration and routing solutions using Enterprise Integration Patterns (EIPs). Each route defines an integration path between endpoints, where a system can either send or receive messages, and while data is in these routes it may be transformed, validated, intercepted, and so on. Routes may change endpoints dynamically, either as additional bundles are activated, based on the content of the message, or through additional methods. With over 140 defined endpoints Red Hat JBoss Fuse allows for integration with a variety of services immediately upon deployment.
For further reading see the Apache Camel Development Guide.

Apache CXF

Red Hat JBoss Fuse's embedded Web and RESTful services framework is based on Apache CXF, and provides a small footprint engine for creating reusable web services along with service-enabling new and legacy applications as part of an integration solution. Red Hat JBoss Fuse supports a variety of standards and protocols for creating web services, such as SOAP and WSDL among others, and allows for Contract-first or Code-first development with JAX-WS. In addition, Red Hat JBoss Fuse provides a standard way to build RESTful services in Java with JAX-RS.
For further reading see the Apache CXF Development Guide.

Apache ActiveMQ

Red Hat JBoss Fuse's embedded messaging service is based on Apache ActiveMQ. It supports the standard JMS 1.1 features and provides a wide range of extended JMS features for building robust and reliable messaging applications. Red Hat JBoss Fuse consists of both a messaging broker and client-side libraries that enable remote communication among distributed client applications. Red Hat JBoss Fuse supports Point-to-Point and Publish/Subscribe messaging along with both persistent and nonpersistent messages; in addition, ActiveMQ can be scaled both vertically and horizontally to allow for processing of a large volume of messages for a large number of concurrently connected clients.
For further reading, see Red Hat JBoss A-MQ Product Introduction.

Fabric8

Fuse Fabric is a technology layer that allows a group of containers to form a cluster that shares a common set of configuration information and a common set of repositories from which to access runtime artifacts. This allows one to run a number of containers either on your own hardware or in the open hybrid cloud, and allows for configuration management, service discovery failover, load balancing, centralized monitoring among other benefits.
For further reading see Fabric Guide.

Switchyard

Switchyard is a lightweight service delivery framework providing full life-cycle support for developing, deploying, and managing service-oriented applications. It allows you to deploy and run services with limited dependencies, and consists of components such as composite services and composite references.