[[AsynchronousRoutingEngine-AsynchronousRoutingEngine]]
= Asynchronous Routing Engine

*Since Camel 2.4*

As of Camel 2.4 the asynchronous routing engine is back and kicking. +
All the xref:{eip-vc}:eips:enterprise-integration-patterns.adoc[Enterprise Integration Patterns] 
are supported as well a selected number of
Components:

* xref:components::ahc-component.adoc[AHC] *Camel 2.8:* (only producer)
* AWS *Camel 2.11:* (only consumer) for S3 and SNS.
* xref:components::avro-component.adoc[Avro] *Camel 2.10:* (only producer)
* xref:components::cxf-component.adoc[CXF] *Camel 2.5:* (both consumer and producer)
* xref:components::cxfrs-component.adoc[CXFRS] *Camel 2.5:* (only consumer)
* xref:components::direct-vm-component.adoc[Direct-VM] *Camel 2.10.5/2.11.0:* (both consumer
and producer)
* xref:components::file-component.adoc[File] - (only consumer)
* xref:components::ftp-component.adoc[FTP] - (only consumer)
* xref:components::guava-eventbus-component.adoc[Guava EventBus] *Camel 2.10:* (only consumer)
* JBI (both consumer and producer)
* xref:components::jetty-component.adoc[Jetty] (both consumer and producer)
* xref:components::jgroups-component.adoc[JGroups] *Camel 2.10:* (only consumer)
* xref:components::jms-component.adoc[JMS] *Camel 2.5:* (only producer for
Request Reply messaging over JMS). *Camel 2.9:*
(consumer, if option `asyncConsumer=true` is used).
* xref:components::jms-component.adoc[JMS] *Camel 2.9:* (also consumer)
* NMR (both consumer and producer)
* xref:components::netty-component.adoc[Netty] only producer (*Camel 2.10:* also consumer)
* xref:components::seda-component.adoc[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].

* xref:components::timer-component.adoc[Timer] *Camel 2.12:* (only consumer)

When we say a component is supported, that means, the component is
leveraging the asynchronous model. For example xref:components::jetty-component.adoc[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 xref:components::cxf-component.adoc[CXF], the caller will wait for the
reply if `synchronous=true` was configured. Currently, this option is
supported by all the producers. If you don't want to let the
xref:components::cxf-component.adoc[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 components
are always asynchronous and don't support this option.

[[AsynchronousRoutingEngine-Backgroundinformation]]
== Background information

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