2013-09-15

Apache Camel 2.12 Released

A week ago Apache Camel 2.12 was released.

Beware - Apache Camel 2.12 has been released. And its faster than ever!
As this release is yet another great release I wanted to write a blog post to highlight and spread the word of this release.

My intention was to write the blog sooner, but I have a keyboard problem with my laptop, where some keys type double, which makes the keyboard unusable. So I have to plugin an external keyboard, and thus I am limited to using my computer in the office, and not carry it around with me.

Celebrating the 53rd release
Okay excuses aside. Back to the Apache Camel 2.12 release. This release is in fact the 53th release according to Maven Central.

And its my 50th release of Apache Camel, as Apache Camel 1.3 was the first release where I was onboard the Camel team as a committer. And Camel 1.0, 1.1, and 1.2 was the 3 preceding releases.

A kick-ass community
The Apache Camel community is fantastic. Its only been 4.5 months since we released the Apache Camel 2.11.0 release. So with 4.5 months of hacking and development the Camel community have contributed and added

- 17 new components
- 4 new examples
- improved performance in simple/bean languages and routing in general
- resolved more than 300+ JIRA tickets
- fixed many bugs and added many improvements

About half of these components has been donated by contributors, and the remainder by developers from the Camel team. A good and health mix.

First step to generate and include component documentation
This is the first release where we have taken the first steps to allow Camel components to provide documentation in the source code which gets generated and included in the binaries. Likewise a Camel component can offer endpoint completion which allows tooling to offer smart completion. For example the hawtio web console uses this to allow people to have auto completion for JMS queue names, file directory names, bean names in the registry and whatnot.

Other great improvements
There is a number of other improvements that Willem Jiang already blogged about here. I have taken the liberty of quoting some of his highlights, which I find the most interesting, here:
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. This also has an impact on improving routing performance, with smaller thread-frames in use. I have previously blogged about this - long stacktraces in Apache Camel no more.
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. Likewise you can setup to only spool to disk when running low on memory. 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. Which I have previously blogged about - even easier cron scheduled routes.
And other great new improvements is that you can configure the scheduled consumers to be less aggressive when there is no data to poll. This avoids taking up resources in times where there is no data anyway to process. I have previously blogged about this - backoff support for less aggressive polling routes.

POJO aggregation strategy - Yeah we finally implemented that!
And finally you can now develop aggregation strategy implementations as pure POJO classes without having to implement the org.apache.camel.processor.aggregate.AggregationStrategy interface. Just developer a POJO with a method, and have parameters accordingly to a convention. Unforunately I didn't find time to blog about it, but I did add extensive documentation about this at the Camel aggregate EIP pattern. Notice that this works for any of the EIPs that supports AggregationStrategy, such as Content Enricher, Multicast, Recipient List, Splitter etc.

Facebook and more social on the way
And for the people asking for social components, we have new components for Yammer and Facebook. And we also have geo location and a weather component. For the upcoming Camel 2.13 we plan to add support for linkedin. As usual we love contributions so if anyone want to help up, then the community loves that.

And the small things that makes a wonder for some people ...
And a little but great detail is that you can now hide sensitive information, such as passwords in JMX by turning on the mask option. For example you may have staff that manages your Camel application using JMX and you do not want them to be able to read passwords.

More details
You can find more details in the Camel release notes.
And also from Willem Jiang blog.

No comments: