| [[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. |