Apache Camel 2.11 Unleashed!
|Apache Camel 2.11 has been released|
For a detailed description, see the Camel 2.11 release notes.
1) New components
As usual each new release contains a number of new components, contributed by our large user base. Thanks guys.
For example there is camel-cmis which allows to integrate with content management systems, such as Alfresco, or any of the systems supported by Apache Chemistry, which is what we use in camel-cmis.
We also got a new camel-couchdb for integrating with our fellow Apache CouchDB project.
Also, the new camel-elasticsearch component is very exciting, to integrate with the excellent elastichsearch project.
In the hawt new project hawtio we are also working on some great new stuff with elastichsearch around log aggregation and analytics, with a shiny HTML5 graphical user interface using Kibana. If you haven't see hawtio yet, then make sure to check it out.
Then James Strachan created the new camel-rx component, for integrating Camel beautifully, as Eric Maijer said, with the fantastic Netflix port of Reative Extensions (RX) library. And when we get Java 8 as well, this is going to rock.
Then I created the new camel-servletlistener component to allow bootstrapping Apache Camel applications in web applications with no other dependencies. Usually people would need to use Spring or another library to do this. To demonstrate this in an example, we have a new servlet-tomcat-no-spring example and we have my blog entry - Camel web applications without Spring, posted earlier this year explaining this new functionality. For the upcoming Camel 2.12 we will work on an alternative example using the new blueprint-web module that allows Spring XML-like configurations but with only two JARs as dependencies (blueprint-noosgi, blueprint-web). This works beautifully, and we already use it in the hawtio project to easily bootstrap hawtio web applications from a blueprint XML file.
Scott Sullivan stepped up and created the new camel-sjms component for a light-weight JMS component which only depends on the JMS API. This component is expected to be further improved and hardened in the upcoming releases. The camel-sjms component is not a 1 to 1 replacement for the existing camel-jms component. They are two independent components. We want the freedom in camel-sjms to implement the functionality we think is best needed, and as well to avoid the many many options that Spring JMS exposes, and hence creeped into camel-jms as well.
We also have a new component for integration with Redis with the camel-spring-redis component.
And last year I created the camel-urlrewrite component, which allows people to do Camel routes for proxying HTTP services with URL rewrites. I have previously blogged about this as well.
We also created a new control bus component, which allows you to send messages to a control-bus endpoint to control routes. This may make it easier for people to start/stop their Camel routes. This component is expected to be improved in the future, so you for example can get performance statistics and other information as well.
2) SQL component can now consume as well
The SQL component has been improved, so you can now consume as well. This allows you to pickup new data from table(s) and route the data in Camel routes. This is best illustrated by the new camel-example-sql that we created. Oh and we also added support for using named parameters in the SQL queries.
3) Groovy DSL
The Groovy DSL in Camel has been totally overhauled, thanks to community contributions. The DSL is now fully up to date and uses the Groovy'sh style that makes it much more Groovy like. We also added a new Camel Maven Archetype to create a new Camel groovy project.
4) CDI improvements
In the earlier phase of development of Camel 2.11 we worked on improving the camel-cdi component.
We are not there yet but it's a big step in the right direction. We are also waiting a bit for the Apache DeltaSpike project to do new releases so we can finish the last pieces. So expect this to be improved in upcoming releases as well.
5) camel-netty scales better
We also worked on improving the camel-netty component to be faster. Most noticeable the netty producer that now pools channels for reuse.
6) JAXB controlling namespace prefixes
For people stuck in XML land and using JAXB, then we made it easier to control namespace prefixes, so you 100% can control the prefix names in use. This allows to conform the XML to a naming style, or if you must use a specific prefix name; usually if a legacy system expects prefix names to be hardcoded.
7) Guice 3.0
People who are fan of Guice, would be glad to hear we have upgraded camel-guice to use Guice 3.0 as is. The old guicyfruit dependency, which was needed when using Guice 1.x is now gone.
8) Backlog tracer
We introduced a new backlog tracer, which allows tooling to trace Camel messages at runtime, on-demand. There is new camel-backlog-tracer command(s) for Apache Karaf / ServiceMix, which allows you to trace messages on your running Camel applications at runtime. You can even enable a predicate filter, to only trace matched messages etc.
9) OSGi upgrades
Apache Camel 2.11 now requires OSGi 4.3 and Apache Aries 1.0 if you use the camel-blueprint component. This means that you should use Apache Karaf 2.3 or better as the container.
We have improved the startup of Apache Camel a bit, as well the simple language is now faster when invoking OGNL like expressions. And we disabled the type converter utilization statistics as there is a slight performance impact under heavy load. And we managed to let the camel-jms component re-create temporary queues when doing request/reply over JMS with temporary queues, and the connection has been re-connected (eg automatic self-heal). The camel-cxfrs component has a simpler binding, making it easier to use.
And as usual we have a ton of bug fixes, minor improvements and new features. See the release notes for full details.
Apache Camel 2.11 is available for download from the Apache web site, and Maven users can get it from maven central.
The Camel team is now busy working on Apache Camel 2.12, where we have some exiting new work on improved documentations for Camel components.