Hi

The major goal for Camel 2.4 is introducing back the asynchronous
routing engine from the Camel 1.x days.
What we had replaced it with, just didn't cut it for the long run, so
we had to toss it out and replace it back with the 1.x variation.
However the 1.x variation is much more invasive in the camel core.
However the benefits are worth it.

There is a JIRA ticket to track this
https://issues.apache.org/activemq/browse/CAMEL-2723

We got so far with the code that we can move ahead the release
schedule for 2.4 and thus why Hadrian send out
an announcement yesterday.

The engine has been integrated with Apache ServiceMix JBI and NMR,
which means that in SMX 4.3 and Came. 2.4 onwards
you have much better scalability and utilization of the resources.

There is present only a single Camel component which leverages the
async routing as well which is Jetty.
The consumer side uses Jetty continuations and the producer side the
Jetty http async client.

We plan to expand this to other Camel components where async
communication is native supported by the component.
Such as Netty, Mina 2 (when its out), CXF producer, REST stuff and what else.

Mind that async routing does not work to the fullest if you are not
using transactions. Spring TM requires the transactional resources to
be
executed from the same thread context, which is why Camel will
fallback to route fully synchronous if you use transacted routes.
This works automatic and you dont have to worry about it to configure
any of the Camel endpoints to cater for this. It's just that Camel
will have the caller thread blocked while waiting for the async reply,
in case you for example to request/reply over NMR in a transaction.


Almost all the EIP patterns in Camel have been refactored to support
async routing engine as well. So you can use Splitter, Recipient List,
WireTap
and all the others in the most optimal way. Currently there are 3
outstanding works to be looked at:
- Throttler and Delayer EIP to not block while waiting
- Multicast, Recipient List and Splitter EIP to support async routing
engine when parallelProcessing option is enabled (this is a bit tricky
to do).
- RedeliverErrorHandler to use non blocking while waiting for delivery
(current only enabled if async routing has been kicked in) but we can
do this in a general.




-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to