apache-camelactivemq-classicosgi-bundlespring-dm

ApacheCamel + ActiveMQ to JBOSS Fuse, what is the best approach?


I have ApacheCamel + ActiveMQ up and running at work with about 8 different routes. It started nicely when we had 2 routes. The number of routes is growing (currently 10) and the process of adding new route involves updating the existing routes code, testing, deployment..etc. What I really want is a true ESB where bundles/services can be installed, started, stopped or uninstalled without affecting other bundles/services. I've done some research and JBOSS Fuse seems the right choice for us to achieve the above. I do have a couple of questions and hope you guys can help me with:

  1. Where to start? is there any good similar example or tutorial that I can follow?
  2. All routes are currently under one Spring project. Should they be separated to individual bundles (using Spring-dm)? that is one bundle per route
  3. Is JBOSS Fuse the right choice to have a true ESB?

Solution

  • To select at an OSGi based ESB slash container framework using Apache Camel, ServiceMix is the oldest, then came Fuse ESB, and that got renamed to Fuse Fabric.

    So since you have the chance to start fresh, selecting Fuse Fabric or the open source version Fabric8 would be good choices.

    Have a read in the Fuse Fabric documentation about how bundles, features and profiles work.

    In your case, you will build features based on the bundles you have compiled, you will be able to update and deploy the features independently of each other, and you will be able to keep simple control of the release levels of all of the features via profiles.

    e.g.

    myapp-profile 1.1
        firstapp-1.0
            bundle1
            bundle2
        secondapp-1.2
            bundle3
            bundle4
        (+configuration)
    

    In answer to your questions:

    1. Here are some links

    http://www.jboss.org/products/fuse/overview/

    http://www.jboss.org/products/fuse/resources/#demos

    1. If you want to be able to independently stop, start and upgrade your routes, they should be in separate bundles. You can definitely have multiple routes in one bundle if you like, but one route per bundle is perfectly fine. Note that Fuse Fabric uses blueprint as the default DI framework (which is similar to spring, but not the same), since it is OSGi compliant, and I am not able to comment on Spring-dm since I haven't used it.

    2. Whether Fuse Fabric is the right choice for a true ESB is really up to you do decide or to evaluate through a simple proof of concept. Other choices are fabric8 (which is essentially the same thing) or vendor solutions like Mule. In my own experience Fuse Fabric is excellent, though this is a subjective and personal opinion.