Thursday, September 12, 2013

Apache Camel 2.12.0

Camel 2.12.0 was released this week. Now I just want to spend few minutes to introduce some high lights of this release.

First it is amazing that we added about 16 new components in Camel 2.12.0, and most of these components were contributed from the user who write these components for their daily work.

camel-disruptor is leveraging LMAX Disruptor to provide the SEDA behavior in Camel, you can treat it as the replacement of the camel-seda. The big difference between camel-disruptor and camel-seda is that camel-disruptor is using the disruptor's ring buffer to store the message and camel-seda is using JDK memory queue to to store the message. If you have lots of worker thread need to be coordinated with the message flow, you can consider to use camel-disruptor to save you lots of time.

Lots of camel user are interesting about integrating their application with the social network API, now we have camel-yammer, camel-facebook to help you interact with these social network system. If your boss wants you to use camel to write some integration code with salesforce, the camel-salesforce could be your first choice.

For the other components, one of them is supporting new version of third part library, such as camel-quartz2, some of them are supporting other protocol such as camel-rabbitmq, camel-stomp, camel-netty-http.

There are also some improvements on the camel-core side to make camel more easy to use

  • Reduced stack-frames in use during routing, that also makes Camel's stack traces being logged much less verbose. This also allows people to easier debug the internals of Camel as less AsyncCallback callbacks are in use during routing.
  • Easy to use Message History out of the box. And included message history as "route stack-trace" when exceptions logged by Error Handler to make it easier for end users to spot where the exception occurred.
  • Stream caching configuration become easier by using StreamCachingStrategy which allows spool directory per Camel Context instead of shared per JVM. And you can see the stream insight at run time by using JMX management.
  • Polling Consumers such as File, and FTP now supports using custom scheduler.Providing a new Quartz2, and Spring based out of the box, that allows to use CRON based scheduler.
  • New class org.apache.camel.util.toolbox.AggregationStrategies as a starting point to obtain commonly used Aggregation Strategies for Multicast, Splitter, Aggregator, etc. EIPs.
  • New FlexibleAggregationStrategy serving as a one-stop to perform typical aggregation strategy logic out-of-the-box: filtering results, storing them in properties, headers or bodies, as a list, casting results, etc.
  • Camel 2.12.0 also supports to setup the AggregationStrategy in POJO way.
  • Added support for XML Encryption 1.1 algorithms in the XMLSecurity data format. It is now possible to specify stronger digest algorithms when using RSA OAEP Key Transport algorithms.
If you want to go through the detail changes, you can find more information from the release note and change log.


  1. Hi,
    I have developed application which get values from table and call xmlrpc with ApacheXmlRpc. i want to implement same application with ApacheCamel like

    + "&consumer.delay=20000"
    + "&consumer.namedQuery=selectLoanRequests"
    + "&persistenceUnit=LoanServicePU")

    is it possible or i have to create process between from and to to create Map object as required in ApacheXmlrpc?

    I will share my code.

    1. You need to do Map the object to the parameter list which would use for the xmlrpc and setup the message header for it. Please go through the document here[1] for more information about xmlrpc. [1]