Enterprise-ready Tool Support for Apache Camel

DZone 's Guide to

Enterprise-ready Tool Support for Apache Camel

· Integration Zone ·
Free Resource

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).]

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)

Content from my blog:



Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}