Camel provides two primary components. The first is the jms component, which is a generic API for working against JMS servers. The other is the ActiveMQ component, which uses the ActiveMQ API for working with ActiveMQ message brokers.

ActiveMQ component is also the default component within things like servicemix/fuse, using an internal broker (not a networked/external broker).

If you are connecting to ActiveMQ, you can use either the ActiveMQ component or the jms component. The jms component will not start up a broker automatically, you would need to do this yourself.

Fusesource == JBoss Fuse == Apache ServiceMix + some add-ons. For argument sake, i'm going to refer to all three of these as ServiceMix.

ServiceMix is an Enterprise Service Bus, you can lookup the term on wikipedia if you're not familiar with the concept ServiceMix uses Apache Camel to define routes between your components, implementing a number of integration patterns as you so need. ServiceMix deploys by default with Apache CXF, for JAX-RS and JAX-WS services and Apache ActiveMQ, a JMS message broker. Using Camel, you can tell ServiceMix that when a REST API is called, do a series of steps, each step decoupled from the one before it.

JBoss Fuse (the enterprise, costs money edition) comes with some additional components around fail over. Some of these are present in ServiceMix(namely, you can run ServiceMix in a hot stand by mode, waiting for the primary to go down). The Camel load balancer pattern doesn't really mean anything around replication, except that a message coming from one endpoint can be delivered to any of a set of a N endpoints. http://camel.apache.org/load-balancer.html

On the flip side, take a look at ServiceMix's failover http://servicemix.apache.org/docs/4.4.x/users-guide/failover.html

More Information#

There might be more information for this subject on one of the following: