[[AsynchronousRoutingEngine-AsynchronousRoutingEngine]]
Asynchronous Routing Engine
~~~~~~~~~~~~~~~~~~~~~~~~~~~

*Available as of Camel 2.4*

As of Camel 2.4 the asynchronous routing engine is back and kicking. +
All the link:enterprise-integration-patterns.html[Enterprise
Integration Patterns] are supported as well a selected number of
Components:

* <<ahc-component,AHC>> *Camel 2.8:* (only producer)
* AWS *Camel 2.11:* (only consumer) for S3 and SNS.
* <<avro-component,Avro>> *Camel 2.10:* (only producer)
* <<cxf-component,CXF>> *Camel 2.5:* (both consumer and producer)
* <<cxfrs-component,CXFRS>> *Camel 2.5:* (only consumer)
* <<direct-vm-component,Direct-VM>> *Camel 2.10.5/2.11.0:* (both consumer
and producer)
* <<file-component,File>> - (only consumer)
* <<ftp-component,FTP>> - (only consumer)
* <<guava-eventbus-component,Guava EventBus>> *Camel 2.10:* (only consumer)
* JBI (both consumer and producer)
* <<jetty-component,Jetty>> (both consumer and producer)
* <<jgroups-component,JGroups>> *Camel 2.10:* (only consumer)
* <<jms-component,JMS>> *Camel 2.5:* (only producer for
Request Reply messaging over JMS). *Camel 2.9:*
(consumer, if option `asyncConsumer=true` is used).
* <<jms-component,JMS>> *Camel 2.9:* (also consumer)
* <<mqtt-component,MQTT>> *Camel 2.10.2:* (only producer)
* NMR (both consumer and producer)
* <<netty-component,Netty>> only producer (*Camel 2.10:* also consumer)
* <<restlet-component,Restlet>> *Camel 2.8:* (only producer)
* <<seda-component,SEDA>> (both consumer and producer) SEDA was mistakenly
in this list until November 3rd 2012. As of Camel 2.10.x, it still does
not leverage the Async Routing Engine, but support is planned for
http://camel.apache.org/camel-30-roadmap.html#Camel3.0-Roadmap-SEDA%2FVMcomponentstoleverageasyncroutingengine[Camel
3.0].

* <<timer-component,Timer>> *Camel 2.12:* (only consumer)

When we say a component is supported, that means, the component is
leveraging the asynchronous model. For example <<jetty-component,Jetty>>
uses continuations and the async http client to be fully asynchronous
and non blocked. That means no threads will ever be blocked while
waiting for a reply.

In the future additional Components will be
supported as well where it's applicable.

[[AsynchronousRoutingEngine-Forcingtousesynchronousprocessing]]
Forcing to use synchronous processing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You can configure the endpoints with the option `synchronous=true` to
force using synchronous processing. For example when sending a web
service request using <<cxf-component,CXF>>, the caller will wait for the
reply if `synchronous=true` was configured. Currently this option is
supported by the all the producers. If you don't want to let the
<<cxf-component,CXF>> consumer leverage the CXF continuation API to use the
asynchronous processing, you can also use this option `synchronous=true`
to disable it. The JBI and NMR component
are always asynchronous and doesn't support this option.

[[AsynchronousRoutingEngine-Backgroundinformation]]
Background information
~~~~~~~~~~~~~~~~~~~~~~

See Asynchronous Processing for
additional information and the concepts behind the asynchronous model.
