Enterprise-ready Tool Support for Apache Camel

Apache Camel is my favorite integration framework on the Java platform due to great DSLs, a huge community, and so many different components. Camel is used by many developers from different companies all over the world. However, most guys are not aware that some really cool tooling is available for Camel, too. Many people ask me about Camel tooling when I do talks at conferences. This is the reason for this short blog post about Camel tooling.

Apache Camel is my favorite integration framework on the Java platform due to great DSLs, a huge community, and so many different components. Camel is used by many developers from different companies all over the world. However, most guys are not aware that some really cool and – more important – enterprise-ready tooling is available for Camel, too. Many people ask me about Camel tooling when I do talks at conferences. This is the reason for this short blog post about Camel tooling.

[FYI: I work for Talend (one of the vendors). Please also read the comments from my Red Hat friends at the bottom!]

IDE Support

Camel consists of a set of normal Java libraries and is therefore usable with any Java IDE (such as Eclipse, NetBeans or IntelliJ IDEA) or even a classic text editor. Programming DSLs are available for Java, Groovy, and Scala. Even a Kotlin DSL is in the works, thanks to Camel’s founder James Strachan. All familiar IDE features such as code completion or Javadoc view are available for these DSLs. In the Spring XML DSL, the Eclipse-based SpringSource Tool Suite (STS) should be emphasized, which provides the best support for the Spring Framework and XML configurations.

Camel-specific Tooling

Besides classical IDE support, further products are available to provide additional functionality. Integration problems can be modeled with the help of Enterprise Integration Patterns (EIP, http://www.eaipatterns.com/). EIPs are implemented by Camel. Visual designers are available to help modeling integration problems with these EIPs. These tools even generate the corresponding source code automatically. Ideally, developers do not have to write any source code by hand.

Camel tooling is offered by Talend with Talend ESB (http://de.talend.com/products/esb) and JBoss, formerly FuseSource, with Fuse IDE (http://fusesource.com/products/fuse-ide). Both companies also provide full-time committers for the Apache Camel project. Let’s take a short look at these two products in the following.

Open Studio for Talend ESB

Talend ESB is an Eclipse-based integration platform within the Talend Unified Platform. The familiar “look and feel” and the intuitive use of Eclipse remain. The ESB is open source and freely available. The paid Enterprise version offers additional features and support. The ESB can be used independently or in combination with other parts of the Talend Unified Platform, such as BPM, Big Data, or Master Data Management. The great benefit is that everything can be done within one suite using the same GUI and concepts, based on Eclipse.

The entire Talend Unified Platform is based on the “zero-coding” approach. This way, a very efficient implementation of integration problems is possible using the EIPs and components. Routes are modeled and configured with intuitive tool support, all source code is generated. Of course, custom integration logic can still be written and included, for example, POJOs, Spring beans, scripts in different languages, or own Camel components. Plenty of other components besides Camel’s ones are available for Talend ESB – for example connectors to Alfresco, Jasper, SAP, Salesforce, or host systems.

Figure 1: Visual Designer of Talend’s ESB

Fuse IDE

The Fuse IDE is an Eclipse plugin, which is installed from the Eclipse update site. The Visual Designer (see Figure 2) generates Camel routes as XML code using the Spring XML DSL. The generated code is editable vice-versa, i.e. the developer can change the source code. The graphical model applies changes automatically. Fuse IDE is intuitive to use for creating Camel routes. FuseSource offers some other products, which can be used in combination with Fuse IDE – such as management console or Fuse MQ for messaging.

Under FuseSource, Fuse IDE was a proprietary product. However, FuseSource was recently taken over by RedHat (http://www.redhat.com/about/news/press-archive/2012/6/red-hat-to-acquire-fusesource) and now belongs to the JBoss division.  In the new roadmap, the Fuse IDE is still included. It will probably be integrated into the JBoss Enterprise SOA Platform and become “open sourced”. The integration of FuseSource will take at least a few more months time to complete (http://www.redhat.com/promo/jboss_integration_week/).

JBoss now “owns” three ESB products (JBoss ESB, Switchyard and Fuse ESB). Probably, these will be merged into one product in the end (SwitchYard is also based on Camel). Nevertheless, the FuseSource products will also be supported for some time – primarily in order to satisfy existing customers (my guess).

Figure 2:  Visual Designer of Fuse IDE (JBoss, former FuseSource)

Enterprise-ready Tooling is already available for Apache Camel!

The bottom line is that enterprise-ready tooling is already available for Apache Camel. It is great to see different companies working on tooling for Apache Camel. The winner definitely is Apache Camel… And there is no loser! Talend ESB and Fuse IDE are two different approaches for different kinds of projects.

If you like the „zero-coding“ approach, then take a closer look at Talend’s ESB. It is really easy and efficient to realize integration projects without writing source code – nevertheless, there is enough flexibility for customization and adding own source code. The combination with BPM, MDM or Big Data (based on Hadoop) is also supported within the unified platform using the same open source and „zero-coding“ concepts. If you „insist“ on writing and refactoring all source code by yourself within the text editor of an IDE, then take a look at Fuse IDE.

Your best would be to try out both and see which one fits best into your next enterprise integration project. If you know any other cool Camel tooling (no matter if it is enterprise-ready or not), or if you have any other feedback, please write a comment. Thank you.

Best regards,
Kai Wähner (Twitter: @KaiWaehner)

Dont‘ miss my next post. Subscribe!

We don’t spam! Read our privacy policy for more info.
If you have issues with the registration, please try a private browser tab / incognito mode. If it doesn't help, write me: kontakt@kai-waehner.de

  1. Thanks for the kind words Kai!

    BTW thats a very old screen shot of Fuse IDE, 2.1 looks much nicer: http://fusesource.com/images/fuse-ide-21.png

    there are some webinars on using it here: http://fuse.fusesource.org/presentations.html

    Fuse IDE is now completely open source on github: https://github.com/fusesource/fuseide

    Also Fuse is not going anywhere :). SwitchYard is the long term replacement for JBossESB for sure; but its built on top of Apache Camel; you can still use Apache Camel directly as before or use the service composition capabilities of SwitchYard if you wish – its one consolidated stack now; there’s not really more than one ESB going forward. Apache Camel has never really been an ESB; its more of an integration framework.

    Anyway keep up the good work Kai! 

  2. Excellent job Kai 😉
    To clarify what you present in your blog, it is not true to say that RedHat today has 3 different ESB. There are still 2 (JBoss ESB & Fuse ESB) but JBoss ESB will be replaced by Switchyard which is not longer running top of a JBI / NMR transversal bus but uses a component service architecture. As Fuse ESB does not longer uses a monolithic bus to interconnect endpoints but uses Camel for that purpose, the Fuse ESB platform should be more positioned as integration platform than a pure (old way fashion) ESB. 

  3. Kai, you asked for information about other tools. We have a link collection at http://camel.apache.org/user-stories.html where we have some links for Camel tooling, such as CamelWatch etc.

    James and the Fuse team is working on a web console for Camel, ActiveMQ, etc. at: https://github.com/fusesource/fuse-console.

    Camel has a bit tooling out of the box such as the Maven Archetypes: http://camel.apache.org/camel-maven-archetypes.html
    And as well we have a visualization tool (though not maintained, and possible to be deprecated in the future): http://camel.apache.org/visualisation.html
    And the web console http://camel.apache.org/web-console.html (to be improved in Camel 3.0 onwards)

    What the reader may not read from your blog post, is that you work for Talend, and thus is biased. As well I work for Red Hat and am biased as well. So I just want to add some comments about Fuse IDE, if I may, which seems to be left out.

    Fuse IDE comes in 3 flavors. You can install it as a Eclipse Plugin. We have a .zip / tarball you can unzip/untar which has all you need in one; or we have binary installers.

    Fuse IDE allows you to edit any existing Camel application. For example you can load the Camel examples that comes out of the box with the Apache Camel releases.

    And you can also do development with Fuse IDE with “zero-coding”. It has a graphical editor, where you can do all editing in wizards / properties panels and whatnot.

    Fuse IDE is now open source and free to use for anyone to use, without any locked-down functionality etc – its all open to everyone.

    But as you say the strength of Camel is that it’s very developer friendly  And allows you to use whatever tool/IDE you want / are already using. The routing DSL is so intuitive that you can just use Java code editor / or a XML editor. If you setup the editor to understand the XSD then the XML editor have code assistance, just as you have in Java coding.

    So the big win is Apache Camel being independent from any special tooling to get started. 

  4. Claus,
    thanks for your long comment. A lot of useful information.
    BTW: I think you are right: In blog posts like this one, you should mention who you are working for 🙂 So I added this to the first paragraph.

  5. Claus you have to agree that FUSE IDE is a complete schmuck tool when it comes to writing applications. It’s a total wastage of time. Talend, in comparison, is somewhat better. But the problem with Talend is the complex auto generated code. And no XML DSL’s can be created. 
    Camel tooling is bad to say the least and it is one of the main deterrents that prevents people from using it. Camel can gain wide popularity only when the tooling is as good as Oracle JDeveloper or IBM Websphere Integration Developer. 

  6. CamelSoul,
    Fore sure I don’t agree with your FUD. Fuse IDE is Eclipse based and thus you get all the power for Eclipse out of the box. Fuse IDE adds the visual drag/drop UI you could use. But you do not have to, as its a true two-way editor. Allowing you to edit the Camel route xml files, and then flip to see it visually. Any changes made in UI or XML is possible.
    If you hit any bugs etc, then report them to the Fuse IDE project at:
    Also mind Fuse IDE is complete free and open source. You do not pay a single $ to use it. As opposed to those big companies products you mention. Also Fuse IDE does not store any special meta-data along side your code. Its 100% pure, and is just for editing the Camel XML routes. So you have absolutely no vendor-lock-in if you start use it.
    If you look for easier tooling then maybe a pure web ui tooling will appeal. Such as the Fuse Fabric web Camel editor from the hawtio project: http://hawt.io/
    A little screenshot is here:

Leave a Reply
You May Also Like

Apache Kafka + MQTT = End-to-End IoT Integration (Code, Slides, Video)

MQTT and Apache Kafka are a perfect combination for end-to-end IoT integration from edge to data center. This post discusses two different approaches and refers to implementations on Github using Apache Kafka, Kafka Connect, Confluent MQTT Proxy and Mosquitto.
Read More
Read More

Apache Kafka vs. Middleware (MQ, ETL, ESB) – Slides + Video

This post shares a slide deck and video recording of the differences between an event-driven streaming platform like Apache Kafka and middleware like Message Queues (MQ), Extract-Transform-Load (ETL) and Enterprise Service Bus (ESB).
Read More