Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Thu Nov 29 08:26:57 
2018
@@ -91,11 +91,11 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><div class="titlepage conf-macro 
output-block" id="titlepage" data-hasbody="true" data-macro-name="div"><h1 
id="BookInOnePage-ApacheCamel">Apache Camel</h1><h2 
id="BookInOnePage-UserGuide">User Guide</h2><h3 id="replaceme">Version 
2.15.0</h3>
+<div class="wiki-content maincontent"><div class="titlepage conf-macro 
output-block conf-macro output-block" id="titlepage" data-hasbody="false" 
data-macro-name="include"><h1 id="BookInOnePage-ApacheCamel">Apache 
Camel</h1><h2 id="BookInOnePage-UserGuide">User Guide</h2><h3 
id="replaceme">Version 2.15.0</h3>
 <p><br clear="none"> Copyright 2007-2016, Apache Software Foundation</p></div>
 
 
-<div class="toc conf-macro output-block" id="toc" data-hasbody="true" 
data-macro-name="div">
+<div class="toc conf-macro output-block conf-macro output-block" id="toc" 
data-hasbody="false" data-macro-name="include">
 <h1 id="BookInOnePage-TableofContents">Table of Contents</h1>
 
 <p>
@@ -103,20 +103,20 @@
 <p> </p></div>
 
 
-<div class="chapter page-reset conf-macro output-block" 
id="chapter-introduction" data-hasbody="true" data-macro-name="div">
+<div class="chapter page-reset conf-macro output-block conf-macro 
output-block" id="chapter-introduction" data-hasbody="false" 
data-macro-name="include">
 <h1 id="BookInOnePage-Introduction">Introduction</h1>
 
-Apache Camel &#8482; is a versatile open-source integration framework based on 
known <a shape="rect" href="enterprise-integration-patterns.html">Enterprise 
Integration Patterns</a>.<p>Camel empowers you to define routing and mediation 
rules in a variety of domain-specific languages, including a Java-based <a 
shape="rect" href="dsl.html">Fluent API</a>, <a shape="rect" 
href="spring.html">Spring</a> or <a shape="rect" 
href="using-osgi-blueprint-with-camel.html">Blueprint</a> <a shape="rect" 
href="xml-configuration.html">XML Configuration</a> files, and a <a 
shape="rect" href="scala-dsl.html">Scala DSL</a>. This means you get smart 
completion of routing rules in your IDE, whether in a Java, Scala or XML 
editor.</p><p>Apache Camel uses <a shape="rect" href="uris.html">URIs</a> to 
work directly with any kind of <a shape="rect" 
href="transport.html">Transport</a> or messaging model such as <a shape="rect" 
href="http.html">HTTP</a>, <a shape="rect" href="activemq.html">ActiveMQ</a>, 
<a sha
 pe="rect" href="jms.html">JMS</a>, <a shape="rect" href="jbi.html">JBI</a>, 
SCA, <a shape="rect" href="mina.html">MINA</a> or <a shape="rect" 
href="cxf.html">CXF</a>, as well as pluggable <a shape="rect" 
href="components.html">Components</a> and <a shape="rect" 
href="data-format.html">Data Format</a> options. Apache Camel is a small 
library with minimal <a shape="rect" 
href="what-are-the-dependencies.html">dependencies</a> for easy embedding in 
any Java application. Apache Camel lets you work with the same <a shape="rect" 
href="exchange.html">API</a> regardless which kind of <a shape="rect" 
href="transport.html">Transport</a> is used - so learn the API once and you can 
interact with all the <a shape="rect" href="components.html">Components</a> 
provided out-of-box.</p><p>Apache Camel provides support for <a shape="rect" 
href="bean-binding.html">Bean Binding</a> and seamless integration with popular 
frameworks such as <a shape="rect" href="cdi.html">CDI</a>,&#160;<a 
shape="rect" href=
 "spring.html">Spring</a>, <a shape="rect" 
href="using-osgi-blueprint-with-camel.html">Blueprint</a> and <a shape="rect" 
href="guice.html">Guice</a>. Camel also has extensive support for <a 
shape="rect" href="testing.html">unit testing</a> your routes.</p><p>The 
following projects can leverage Apache Camel as a routing and mediation 
engine:</p><ul><li><a shape="rect" class="external-link" 
href="http://servicemix.apache.org/";>Apache ServiceMix</a> - a popular 
distributed open source ESB and JBI container</li><li><a shape="rect" 
class="external-link" href="http://activemq.apache.org/";>Apache ActiveMQ</a> - 
a mature, widely used open source message broker</li><li><a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> - a smart web services suite 
(JAX-WS and JAX-RS)</li><li><a shape="rect" class="external-link" 
href="http://karaf.apache.org/";>Apache Karaf</a> - a small OSGi based runtime 
in which applications can be deployed</li><li><a shape="rect" 
class="external-link" href="http:
 //mina.apache.org/">Apache MINA</a> - a high-performance <a shape="rect" 
class="external-link" href="http://en.wikipedia.org/wiki/New_I/O"; 
rel="nofollow">NIO</a>-driven networking framework</li></ul><p>So don't get the 
hump - try Camel today! <img class="emoticon emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/smile.svg";
 data-emoticon-name="smile" alt="(smile)"></p><div 
class="confluence-information-macro confluence-information-macro-tip conf-macro 
output-block" data-hasbody="true" data-macro-name="tip"><p class="title">Too 
many buzzwords - what exactly is Camel?</p><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"> </span><div 
class="confluence-information-macro-body"><p>Okay, so the description above is 
technology focused. <br clear="none"> There's a great discussion about Camel at 
<a shape="rect" class="external-link" href="http://stackoverflow.com/qu
 estions/8845186/what-exactly-is-apache-camel" rel="nofollow">Stack 
Overflow</a>. We suggest you view the post, read the comments, and browse the 
suggested links for more details.</p></div></div></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include">Apache Camel &#8482; is a versatile open-source 
integration framework based on known <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a>.<p>Camel empowers you to define routing and mediation rules in a 
variety of domain-specific languages, including a Java-based <a shape="rect" 
href="dsl.html">Fluent API</a>, <a shape="rect" href="spring.html">Spring</a> 
or <a shape="rect" href="using-osgi-blueprint-with-camel.html">Blueprint</a> <a 
shape="rect" href="xml-configuration.html">XML Configuration</a> files, and a 
<a shape="rect" href="scala-dsl.html">Scala DSL</a>. This means you get smart 
completion of routing rules in your IDE, whether in a Java, Scala or XML 
editor.</p><p>Apache Camel uses <a shape="rect" href="uris.html">URIs</a> to 
work directly with any kind of <a shape="rect" 
href="transport.html">Transport</a> or messaging model such as <a shape="rect" 
 href="http.html">HTTP</a>, <a shape="rect" href="activemq.html">ActiveMQ</a>, 
<a shape="rect" href="jms.html">JMS</a>, <a shape="rect" 
href="jbi.html">JBI</a>, SCA, <a shape="rect" href="mina.html">MINA</a> or <a 
shape="rect" href="cxf.html">CXF</a>, as well as pluggable <a shape="rect" 
href="components.html">Components</a> and <a shape="rect" 
href="data-format.html">Data Format</a> options. Apache Camel is a small 
library with minimal <a shape="rect" 
href="what-are-the-dependencies.html">dependencies</a> for easy embedding in 
any Java application. Apache Camel lets you work with the same <a shape="rect" 
href="exchange.html">API</a> regardless which kind of <a shape="rect" 
href="transport.html">Transport</a> is used - so learn the API once and you can 
interact with all the <a shape="rect" href="components.html">Components</a> 
provided out-of-box.</p><p>Apache Camel provides support for <a shape="rect" 
href="bean-binding.html">Bean Binding</a> and seamless integration with popular 
fr
 ameworks such as <a shape="rect" href="cdi.html">CDI</a>,&#160;<a shape="rect" 
href="spring.html">Spring</a>, <a shape="rect" 
href="using-osgi-blueprint-with-camel.html">Blueprint</a> and <a shape="rect" 
href="guice.html">Guice</a>. Camel also has extensive support for <a 
shape="rect" href="testing.html">unit testing</a> your routes.</p><p>The 
following projects can leverage Apache Camel as a routing and mediation 
engine:</p><ul><li><a shape="rect" class="external-link" 
href="http://servicemix.apache.org/";>Apache ServiceMix</a> - a popular 
distributed open source ESB and JBI container</li><li><a shape="rect" 
class="external-link" href="http://activemq.apache.org/";>Apache ActiveMQ</a> - 
a mature, widely used open source message broker</li><li><a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> - a smart web services suite 
(JAX-WS and JAX-RS)</li><li><a shape="rect" class="external-link" 
href="http://karaf.apache.org/";>Apache Karaf</a> - a small OSGi based runtime 
in which ap
 plications can be deployed</li><li><a shape="rect" class="external-link" 
href="http://mina.apache.org/";>Apache MINA</a> - a high-performance <a 
shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/New_I/O"; 
rel="nofollow">NIO</a>-driven networking framework</li></ul><p>So don't get the 
hump - try Camel today! <img class="emoticon emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/smile.svg";
 data-emoticon-name="smile" alt="(smile)"></p><div 
class="confluence-information-macro confluence-information-macro-tip conf-macro 
output-block" data-hasbody="true" data-macro-name="tip"><p class="title">Too 
many buzzwords - what exactly is Camel?</p><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"> </span><div 
class="confluence-information-macro-body"><p>Okay, so the description above is 
technology focused. <br clear="none"> There's a great discussion ab
 out Camel at <a shape="rect" class="external-link" 
href="http://stackoverflow.com/questions/8845186/what-exactly-is-apache-camel"; 
rel="nofollow">Stack Overflow</a>. We suggest you view the post, read the 
comments, and browse the suggested links for more 
details.</p></div></div></div></div>
 
 
-<div class="chapter page-reset conf-macro output-block" 
id="chapter-quickstart" data-hasbody="true" data-macro-name="div">
+<div class="chapter page-reset conf-macro output-block conf-macro 
output-block" id="chapter-quickstart" data-hasbody="false" 
data-macro-name="include">
 <h1 id="BookInOnePage-Quickstart">Quickstart</h1>
 
 <p>To start using Apache Camel quickly, you can read through some simple 
examples in this chapter. For readers who would like a more thorough 
introduction, please skip ahead to Chapter 3.</p>
 
-<h2 id="BookInOnePage-WalkthroughanExampleCode">Walk through an Example 
Code</h2><p>This mini-guide takes you through the source code of a <a 
shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java";>simple
 example</a>.</p><p>Camel can be configured either by using <a shape="rect" 
href="spring.html">Spring</a> or directly in Java - which <a shape="rect" 
class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java";>this
 example does</a>.</p><p>This example is available in the 
<code>examples\camel-example-jms-file</code> directory of the <a shape="rect" 
href="download.html">Camel distribution</a>.</p><p>We start with creating a <a 
shape="rect" href="camelcontext.html">CamelContext</a> - which is a container 
for <a shape="rect" href=
 "components.html">Components</a>, <a shape="rect" 
href="routes.html">Routes</a> 
etc:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>There
 is more than one way of adding a Component to the CamelContext. You can add 
components implicitly - when we set up the routing - as we do here for the <a 
shape="rect" 
href="file2.html">FileComponent</a>:<plain-text-body>{snippet:id=e3|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>or
 explicitly - as we do here when we add the JMS 
Component:<plain-text-body>{snippet:id=e2|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>The
 above works with any JMS provider. If we know we are using <a shape="rect" 
href="activem
 q.html">ActiveMQ</a> we can use an even simpler form using the <a shape="rect" 
class="external-link" 
href="http://activemq.apache.org/maven/5.5.0/activemq-camel/apidocs/org/apache/activemq/camel/component/ActiveMQComponent.html#activeMQComponent%28java.lang.String%29";><code>activeMQComponent()</code>
 method</a> while specifying the <a shape="rect" class="external-link" 
href="http://activemq.apache.org/configuring-transports.html";>brokerURL</a> 
used to connect to ActiveMQ</p><p>In normal use, an external system would be 
firing messages or events directly into Camel through one if its <a 
shape="rect" href="components.html">Components</a> but we are going to use the 
<a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/ProducerTemplate.html";>ProducerTemplate</a>
 which is a really easy way for testing your 
configuration:<plain-text-body>{snippet:id=e4|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/o
 
rg/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>Next
 you <strong>must</strong> start the camel context. If you are using <a 
shape="rect" href="spring.html">Spring</a> to configure the camel context this 
is automatically done for you; though if you are using a pure Java approach 
then you just need to call the start() 
method</p><plain-text-body>camelContext.start();
-</plain-text-body><p>This will start all of the configured routing 
rules.</p><p>So after starting the <a shape="rect" 
href="camelcontext.html">CamelContext</a>, we can fire some objects into 
camel:<plain-text-body>{snippet:id=e5|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body></p><h2
 id="BookInOnePage-Whathappens?">What happens?</h2><p>From the <a shape="rect" 
class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/ProducerTemplate.html";>ProducerTemplate</a>
 - we send objects (in this case text) into the <a shape="rect" 
href="camelcontext.html">CamelContext</a> to the Component 
<em>test-jms:queue:test.queue</em>. These text objects will be <a shape="rect" 
href="type-converter.html">converted automatically</a> into JMS Messages and 
posted to a JMS Queue named <em>test.queue</em>. When we set up the <a 
shape="rect" href="routes.html">Rou
 te</a>, we configured the <a shape="rect" href="file2.html">FileComponent</a> 
to listen off the <em>test.queue</em>.</p><p>The File <a shape="rect" 
href="file2.html">FileComponent</a> will take messages off the Queue, and save 
them to a directory named <em>test</em>. Every message will be saved in a file 
that corresponds to its destination and message id.</p><p>Finally, we 
configured our own listener in the <a shape="rect" href="routes.html">Route</a> 
- to take notifications from the <a shape="rect" 
href="file2.html">FileComponent</a> and print them out as 
text.</p><p><strong>That's it!</strong></p><p>If you have the time then use 5 
more minutes to <a shape="rect" href="walk-through-another-example.html">Walk 
through another example</a> that demonstrates the Spring DSL (XML based) 
routing.</p>
-<h2 id="BookInOnePage-Walkthroughanotherexample">Walk through another 
example</h2>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 id="BookInOnePage-WalkthroughanExampleCode">Walk 
through an Example Code</h2><p>This mini-guide takes you through the source 
code of a <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java";>simple
 example</a>.</p><p>Camel can be configured either by using <a shape="rect" 
href="spring.html">Spring</a> or directly in Java - which <a shape="rect" 
class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java";>this
 example does</a>.</p><p>This example is available in the 
<code>examples\camel-example-jms-file</code> directory of the <a shape="rect" 
href="download.html">Camel distribution</a>.</p><p>We start with creating a <a 
shape="rect" href="
 camelcontext.html">CamelContext</a> - which is a container for <a shape="rect" 
href="components.html">Components</a>, <a shape="rect" 
href="routes.html">Routes</a> 
etc:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>There
 is more than one way of adding a Component to the CamelContext. You can add 
components implicitly - when we set up the routing - as we do here for the <a 
shape="rect" 
href="file2.html">FileComponent</a>:<plain-text-body>{snippet:id=e3|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>or
 explicitly - as we do here when we add the JMS 
Component:<plain-text-body>{snippet:id=e2|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>The
 abov
 e works with any JMS provider. If we know we are using <a shape="rect" 
href="activemq.html">ActiveMQ</a> we can use an even simpler form using the <a 
shape="rect" class="external-link" 
href="http://activemq.apache.org/maven/5.5.0/activemq-camel/apidocs/org/apache/activemq/camel/component/ActiveMQComponent.html#activeMQComponent%28java.lang.String%29";><code>activeMQComponent()</code>
 method</a> while specifying the <a shape="rect" class="external-link" 
href="http://activemq.apache.org/configuring-transports.html";>brokerURL</a> 
used to connect to ActiveMQ</p><p>In normal use, an external system would be 
firing messages or events directly into Camel through one if its <a 
shape="rect" href="components.html">Components</a> but we are going to use the 
<a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/ProducerTemplate.html";>ProducerTemplate</a>
 which is a really easy way for testing your configuration:<plain-text-body>{sni
 
ppet:id=e4|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body>Next
 you <strong>must</strong> start the camel context. If you are using <a 
shape="rect" href="spring.html">Spring</a> to configure the camel context this 
is automatically done for you; though if you are using a pure Java approach 
then you just need to call the start() 
method</p><plain-text-body>camelContext.start();
+</plain-text-body><p>This will start all of the configured routing 
rules.</p><p>So after starting the <a shape="rect" 
href="camelcontext.html">CamelContext</a>, we can fire some objects into 
camel:<plain-text-body>{snippet:id=e5|lang=java|url=camel/trunk/examples/camel-example-jms-file/src/main/java/org/apache/camel/example/jmstofile/CamelJmsToFileExample.java}</plain-text-body></p><h2
 id="BookInOnePage-Whathappens?">What happens?</h2><p>From the <a shape="rect" 
class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/ProducerTemplate.html";>ProducerTemplate</a>
 - we send objects (in this case text) into the <a shape="rect" 
href="camelcontext.html">CamelContext</a> to the Component 
<em>test-jms:queue:test.queue</em>. These text objects will be <a shape="rect" 
href="type-converter.html">converted automatically</a> into JMS Messages and 
posted to a JMS Queue named <em>test.queue</em>. When we set up the <a 
shape="rect" href="routes.html">Rou
 te</a>, we configured the <a shape="rect" href="file2.html">FileComponent</a> 
to listen off the <em>test.queue</em>.</p><p>The File <a shape="rect" 
href="file2.html">FileComponent</a> will take messages off the Queue, and save 
them to a directory named <em>test</em>. Every message will be saved in a file 
that corresponds to its destination and message id.</p><p>Finally, we 
configured our own listener in the <a shape="rect" href="routes.html">Route</a> 
- to take notifications from the <a shape="rect" 
href="file2.html">FileComponent</a> and print them out as 
text.</p><p><strong>That's it!</strong></p><p>If you have the time then use 5 
more minutes to <a shape="rect" href="walk-through-another-example.html">Walk 
through another example</a> that demonstrates the Spring DSL (XML based) 
routing.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 id="BookInOnePage-Walkthroughanotherexample">Walk 
through another example</h2>
 
 <h3 id="BookInOnePage-Introduction.1">Introduction</h3>
 <p>Continuing the walk from our first <a shape="rect" 
href="walk-through-an-example.html">example</a>, we take a closer look at the 
routing and explain a few pointers - so you won't walk into a bear trap, but 
can enjoy an after-hours walk to the local pub for a large beer <img 
class="emoticon emoticon-wink" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/wink.svg";
 data-emoticon-name="wink" alt="(wink)"></p>
@@ -245,10 +245,10 @@ Apache Camel &#8482; is a versatile open
 <p>This example is also based on the <strong>in-only</strong> message exchange 
pattern. What you must understand as well is the <strong>in-out</strong> 
message exchange pattern, where the caller expects a response. We will look 
into this in another example.</p>
 
 <h3 id="BookInOnePage-Seealso">See also</h3>
-<ul class="alternate"><li><a shape="rect" 
href="examples.html">Examples</a></li><li><a shape="rect" 
href="tutorials.html">Tutorials</a></li><li><a shape="rect" 
href="user-guide.html">User Guide</a></li></ul></div>
+<ul class="alternate"><li><a shape="rect" 
href="examples.html">Examples</a></li><li><a shape="rect" 
href="tutorials.html">Tutorials</a></li><li><a shape="rect" 
href="user-guide.html">User Guide</a></li></ul></div></div>
 
 
-<div class="chapter conf-macro output-block" id="chapter-getting-started" 
data-hasbody="true" data-macro-name="div">
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><div class="chapter conf-macro output-block" 
id="chapter-getting-started" data-hasbody="true" data-macro-name="div">
 <h1 id="BookInOnePage-GettingStartedwithApacheCamel">Getting Started with 
Apache Camel</h1></div>
 
 
@@ -414,8 +414,8 @@ However, there is another option that th
 
 <h3 id="BookInOnePage-ContinueLearningaboutCamel">Continue Learning about 
Camel</h3>
 
-<p>Return to the main <a shape="rect" href="getting-started.html">Getting 
Started</a> page for additional introductory reference information.</p>
-<div class="chapter conf-macro output-block" id="chapter-architecture" 
data-hasbody="true" data-macro-name="div">
+<p>Return to the main <a shape="rect" href="getting-started.html">Getting 
Started</a> page for additional introductory reference information.</p></div>
+<div class="chapter conf-macro output-block conf-macro output-block" 
id="chapter-architecture" data-hasbody="false" data-macro-name="include">
 <h1 id="BookInOnePage-Architecture">Architecture</h1>
 
 <span class="conf-macro output-inline" data-hasbody="false" 
data-macro-name="excerpt-include">Camel uses a Java based <a shape="rect" 
href="dsl.html">Routing Domain Specific Language (DSL)</a> or an <a 
shape="rect" href="xml-configuration.html">Xml Configuration</a> to configure 
<a shape="rect" href="routes.html">routing and mediation rules</a> which are 
added to a <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/CamelContext.html";>CamelContext</a>
 to implement the various <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a>. 
@@ -426,11 +426,11 @@ However, there is another option that th
 
 <p>The <a shape="rect" href="dsl.html">DSL</a> makes heavy use of pluggable <a 
shape="rect" href="languages.html">Languages</a> to create an <a shape="rect" 
href="expression.html">Expression</a> or <a shape="rect" 
href="predicate.html">Predicate</a> to make a truly powerful DSL which is 
extensible to the most suitable language depending on your needs. The following 
languages are supported</p>
 
-<ul><li><a shape="rect" href="bean-language.html">Bean Language</a> for using 
Java for expressions</li><li><a shape="rect" 
href="constant.html">Constant</a></li><li>the unified <a shape="rect" 
href="el.html">EL</a> from JSP and JSF</li><li><a shape="rect" 
href="header.html">Header</a></li><li><a shape="rect" 
href="jsonpath.html">JSonPath</a></li><li><a shape="rect" 
href="jxpath.html">JXPath</a></li><li><a shape="rect" 
href="mvel.html">Mvel</a></li><li><a shape="rect" 
href="ognl.html">OGNL</a></li><li><a shape="rect" href="ref-language.html">Ref 
Language</a></li><li><a shape="rect" 
href="exchangeproperty.html">ExchangeProperty</a> /&#160;<a shape="rect" 
href="property.html">Property</a></li><li><a shape="rect" 
href="scripting-languages.html">Scripting Languages</a> such as<ul><li><a 
shape="rect" href="beanshell.html">BeanShell</a></li><li><a shape="rect" 
href="javascript.html">JavaScript</a></li><li><a shape="rect" 
href="groovy.html">Groovy</a></li><li><a shape="rect" href="python.ht
 ml">Python</a></li><li><a shape="rect" href="php.html">PHP</a></li><li><a 
shape="rect" href="ruby.html">Ruby</a></li></ul></li><li><a shape="rect" 
href="simple.html">Simple</a><ul><li><a shape="rect" 
href="file-language.html">File Language</a></li></ul></li><li><a shape="rect" 
href="spel.html">Spring Expression Language</a></li><li><a shape="rect" 
href="sql.html">SQL</a></li><li><a shape="rect" 
href="tokenizer.html">Tokenizer</a></li><li><a shape="rect" 
href="xpath.html">XPath</a></li><li><a shape="rect" 
href="xquery.html">XQuery</a></li><li><a shape="rect" 
href="vtd-xml.html">VTD-XML</a></li></ul><p>Most of these languages is also 
supported used as <a shape="rect" 
href="annotation-based-expression-language.html">Annotation Based Expression 
Language</a>.</p>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><ul><li><a shape="rect" 
href="bean-language.html">Bean Language</a> for using Java for 
expressions</li><li><a shape="rect" 
href="constant.html">Constant</a></li><li>the unified <a shape="rect" 
href="el.html">EL</a> from JSP and JSF</li><li><a shape="rect" 
href="header.html">Header</a></li><li><a shape="rect" 
href="jsonpath.html">JSonPath</a></li><li><a shape="rect" 
href="jxpath.html">JXPath</a></li><li><a shape="rect" 
href="mvel.html">Mvel</a></li><li><a shape="rect" 
href="ognl.html">OGNL</a></li><li><a shape="rect" href="ref-language.html">Ref 
Language</a></li><li><a shape="rect" 
href="exchangeproperty.html">ExchangeProperty</a> /&#160;<a shape="rect" 
href="property.html">Property</a></li><li><a shape="rect" 
href="scripting-languages.html">Scripting Languages</a> such as<ul><li><a 
shape="rect" href="beanshell.html">BeanShell</a></li><li><a shape="rect" 
href="javascript.html">JavaScript</a></li><li><
 a shape="rect" href="groovy.html">Groovy</a></li><li><a shape="rect" 
href="python.html">Python</a></li><li><a shape="rect" 
href="php.html">PHP</a></li><li><a shape="rect" 
href="ruby.html">Ruby</a></li></ul></li><li><a shape="rect" 
href="simple.html">Simple</a><ul><li><a shape="rect" 
href="file-language.html">File Language</a></li></ul></li><li><a shape="rect" 
href="spel.html">Spring Expression Language</a></li><li><a shape="rect" 
href="sql.html">SQL</a></li><li><a shape="rect" 
href="tokenizer.html">Tokenizer</a></li><li><a shape="rect" 
href="xpath.html">XPath</a></li><li><a shape="rect" 
href="xquery.html">XQuery</a></li><li><a shape="rect" 
href="vtd-xml.html">VTD-XML</a></li></ul><p>Most of these languages is also 
supported used as <a shape="rect" 
href="annotation-based-expression-language.html">Annotation Based Expression 
Language</a>.</p></div>
 
 <p>For a full details of the individual languages see the <a shape="rect" 
href="book-languages-appendix.html">Language Appendix</a></p>
 
-<h2 id="BookInOnePage-URIs">URIs</h2>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 id="BookInOnePage-URIs">URIs</h2>
 
 <p>Camel makes extensive use of URIs to allow you to refer to endpoints which 
are lazily created by a <a shape="rect" href="component.html">Component</a> if 
you refer to them within <a shape="rect" href="routes.html">Routes</a>.</p>
 
@@ -439,7 +439,7 @@ However, there is another option that th
 
 <h3 id="BookInOnePage-CurrentSupportedURIs">Current Supported URIs</h3>
 
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Component / ArtifactId / 
URI</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" href="ahc.html">AHC</a> 
/&#160;<code>camel-ahc</code></p><div class="code panel pdl conf-macro 
output-block" data-hasbody="true" data-macro-name="code" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Component / ArtifactId / URI</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="ahc.html">AHC</a> /&#160;<code>camel-ahc</code></p><div class="code panel 
pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" 
data-theme="Default">ahc:http[s]://hostName[:port][/resourceUri][?options]
 </pre>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>To call 
external HTTP services using <a shape="rect" class="external-link" 
href="https://github.com/AsyncHttpClient/async-http-client"; 
rel="nofollow">Async Http Client</a></p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="ahc-ws.html">AHC-WS</a> <span> 
/&#160;<code>camel-ahc-ws</code></span></p><div class="code panel pdl 
conf-macro output-block" data-hasbody="true" data-macro-name="code" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -1036,14 +1036,14 @@ flink:datastream[?options]</pre>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Allows 
you to interact with the <a shape="rect" class="external-link" 
href="http://yammer.com"; rel="nofollow">Yammer</a> enterprise social 
network</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a 
shape="rect" href="zookeeper.html">Zookeeper</a> 
/&#160;<code>camel-zookeeper</code></p><div class="code panel pdl conf-macro 
output-block" data-hasbody="true" data-macro-name="code" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" 
data-theme="Default">zookeeper://zookeeperServer[:port][/path][?options]
 </pre>
-</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Working 
with <a shape="rect" class="external-link" 
href="http://hadoop.apache.org/zookeeper/";>ZooKeeper</a> 
cluster(s)</p></td></tr></tbody></table></div><p>&#160;</p><div><span 
style="white-space: pre-wrap;"> <br clear="none"> </span></div><div><span 
style="white-space: pre-wrap;"> <br clear="none"> </span></div><div><span 
style="white-space: pre-wrap;"> <br clear="none"> <br clear="none"> 
</span></div>
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Working 
with <a shape="rect" class="external-link" 
href="http://hadoop.apache.org/zookeeper/";>ZooKeeper</a> 
cluster(s)</p></td></tr></tbody></table></div><p>&#160;</p><div><span 
style="white-space: pre-wrap;"> <br clear="none"> </span></div><div><span 
style="white-space: pre-wrap;"> <br clear="none"> </span></div><div><span 
style="white-space: pre-wrap;"> <br clear="none"> <br clear="none"> 
</span></div></div>
 
 
 <h3 id="BookInOnePage-URI'sforexternalcomponents">URI's for external 
components</h3>
 
 <p>Other projects and companies have also created Camel components to 
integrate additional functionality into Camel. These components may be provided 
under licenses that are not compatible with the Apache License, use libraries 
that are not compatible, etc... These components are not supported by the Camel 
team, but we provide links here to help users find the additional 
functionality.</p>
 
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Component / ArtifactId / 
URI</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>License</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="activemq.html">ActiveMQ</a> /&#160;<code>activemq-camel</code></p><div 
class="code panel pdl conf-macro output-block" data-hasbody="true" 
data-macro-name="code" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<div class="table-wrap conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Component / ArtifactId / 
URI</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>License</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="activemq.html">ActiveMQ</a> /&#160;<code>activemq-camel</code></p><div 
class="code panel pdl conf-macro output-block" data-hasbody="true" 
data-macro-name="code" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" 
data-theme="Default">activemq:[queue|topic:]destinationName</pre>
 </div></div></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Apache</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>For JMS Messaging with <a shape="rect" 
class="external-link" href="http://activemq.apache.org/"; title="The most 
popular and powerful open source message broker">Apache 
ActiveMQ.</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" class="external-link" 
href="http://activemq.apache.org/broker-camel-component.html";>ActiveMQ 
Broker</a> /&#160;<code>activemq-camel</code></p><div class="code panel pdl 
conf-macro output-block" data-hasbody="true" data-macro-name="code" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: text; 
gutter: false; theme: Default" 
data-theme="Default">broker:[queue|topic:]destinationName</pre>
@@ -1124,12 +1124,12 @@ flink:datastream[?options]</pre>
 </div></div></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Apache</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Camel <a shape="rect" class="external-link" 
href="http://webcam-capture.sarxos.pl/"; rel="nofollow">Webcam</a> component can 
be used to capture still images and detect motion.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="zeromq.html">ZeroMQ</a> /&#160;<code>camel-zeromq</code> / <a 
shape="rect" class="external-link" href="http://code.google.com/p/camel-extra/"; 
rel="nofollow">camel-extra</a></p><div class="code panel pdl conf-macro 
output-block" data-hasbody="true" data-macro-name="code" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" 
data-theme="Default">zeromq:(tcp|ipc)://hostname:port
 </pre>
-</div></div></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>LGPL</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The ZeroMQ component allows you to consumer or produce 
messages using&#160;<a shape="rect" class="external-link" 
href="http://zeromq.org"; 
rel="nofollow">ZeroMQ</a>.</p></td></tr></tbody></table></div>
+</div></div></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>LGPL</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The ZeroMQ component allows you to consumer or produce 
messages using&#160;<a shape="rect" class="external-link" 
href="http://zeromq.org"; 
rel="nofollow">ZeroMQ</a>.</p></td></tr></tbody></table></div></div>
 
 <p>For a full details of the individual components see the <a shape="rect" 
href="book-component-appendix.html">Component Appendix</a></p></div>
 
 
-<div class="chapter conf-macro output-block" 
id="chapter-enterprise-integration-patterns" data-hasbody="true" 
data-macro-name="div">
+<div class="chapter conf-macro output-block conf-macro output-block" 
id="chapter-enterprise-integration-patterns" data-hasbody="false" 
data-macro-name="include">
 <h1 id="BookInOnePage-EnterpriseIntegrationPatterns">Enterprise Integration 
Patterns</h1>
 
 
@@ -1145,19 +1145,19 @@ flink:datastream[?options]</pre>
 </div>
 
 
-<div class="chapter conf-macro output-block" id="chapter-cook-book" 
data-hasbody="false" data-macro-name="div"> </div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><div class="chapter conf-macro output-block" 
id="chapter-cook-book" data-hasbody="false" data-macro-name="div"> </div>
 
 
 
 <h1 id="BookInOnePage-CookBook">CookBook</h1>
 This document describes various recipes for working with Camel
-<ul><li><a shape="rect" href="bean-integration.html">Bean Integration</a> 
describes how to work with beans and Camel in a loosely coupled way so that 
your beans do not have to depend on any Camel APIs
+<ul class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><li><a shape="rect" href="bean-integration.html">Bean 
Integration</a> describes how to work with beans and Camel in a loosely coupled 
way so that your beans do not have to depend on any Camel APIs
        <ul><li><a shape="rect" 
href="annotation-based-expression-language.html">Annotation Based Expression 
Language</a> binds expressions to method parameters</li><li><a shape="rect" 
href="bean-binding.html">Bean Binding</a> defines which methods are invoked and 
how the Message is converted into the parameters of the method when it is 
invoked</li><li><a shape="rect" href="bean-injection.html">Bean Injection</a> 
for injecting Camel related resources into your POJOs</li><li><a shape="rect" 
href="parameter-binding-annotations.html">Parameter Binding Annotations</a> for 
extracting various headers, properties or payloads from a Message</li><li><a 
shape="rect" href="pojo-consuming.html">POJO Consuming</a> for consuming and 
possibly routing messages from Camel</li><li><a shape="rect" 
href="pojo-producing.html">POJO Producing</a> for producing camel messages from 
your POJOs</li><li><a shape="rect" 
href="recipientlist-annotation.html">RecipientList Annotation</a> for creating 
a Recipient List fro
 m a POJO method</li><li><a shape="rect" 
href="using-exchange-pattern-annotations.html">Using Exchange Pattern 
Annotations</a> describes how pattern annotations can be used to change the 
behaviour of method invocations</li></ul>
        </li><li><a shape="rect" href="hiding-middleware.html">Hiding 
Middleware</a> describes how to avoid your business logic being coupled to any 
particular middleware APIs allowing you to easily switch from in JVM <a 
shape="rect" href="seda.html">SEDA</a> to <a shape="rect" 
href="jms.html">JMS</a>, <a shape="rect" href="activemq.html">ActiveMQ</a>, <a 
shape="rect" href="hibernate.html">Hibernate</a>, <a shape="rect" 
href="jpa.html">JPA</a>, <a shape="rect" href="jdbc.html">JDBC</a>, <a 
shape="rect" href="ibatis.html">iBatis</a> or <a shape="rect" 
href="javaspace.html">JavaSpace</a> etc.</li><li><a shape="rect" 
href="visualisation.html">Visualisation</a> describes how to visualise your <a 
shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a> to help you understand your routing rules</li><li><a shape="rect" 
href="bam.html">Business Activity Monitoring (BAM)</a> for monitoring business 
processes across systems</li><li><a shape="rect" href="etl.html">
 Extract Transform Load (ETL)</a> to load data into systems or 
databases</li><li><a shape="rect" href="testing.html">Testing</a> for testing 
distributed and asynchronous systems using a messaging approach
        <ul><li><a shape="rect" href="camel-test.html">Camel Test</a> for 
creating test cases using a single Java class for all your configuration and 
routing</li><li><a shape="rect" href="spring-testing.html">Spring Testing</a> 
uses Spring Test together with either XML or Java Config to dependency inject 
your test classes</li><li><a shape="rect" href="guice.html">Guice</a> uses 
Guice to dependency inject your test classes</li></ul>
        </li><li><a shape="rect" href="templating.html">Templating</a> is a 
great way to create service stubs to be able to test your system without some 
back end system.</li><li><a shape="rect" href="database.html">Database</a> for 
working with databases</li><li><a shape="rect" 
href="parallel-processing-and-ordering.html">Parallel Processing and 
Ordering</a> on how using parallel processing and <a shape="rect" 
href="seda.html">SEDA</a> or <a shape="rect" href="jms.html">JMS</a> based load 
balancing can be achieved.</li><li><a shape="rect" 
href="asynchronous-processing.html">Asynchronous Processing</a> in Camel 
Routes.</li><li><a shape="rect" 
href="implementing-virtual-topics-on-other-jms-providers.html">Implementing 
Virtual Topics on other JMS providers</a> shows how to get the effect of 
Virtual Topics and avoid issues with JMS durable topics</li><li><a shape="rect" 
href="camel-transport-for-cxf.html">Camel Transport for CXF</a> describes how 
to put the Camel context into the CXF transpor
 t layer.</li><li><a shape="rect" 
href="fine-grained-control-over-a-channel.html">Fine Grained Control Over a 
Channel</a> describes how to deliver a sequence of messages over a single 
channel and then stopping any more messages being sent over that channel. 
Typically used for sending data over a socket and then closing the 
socket.</li><li><a shape="rect" 
href="eventnotifier-to-log-details-about-all-sent-exchanges.html">EventNotifier 
to log details about all sent Exchanges</a> shows how to let Camels 
<code>EventNotifier</code> log all sent to endpoint events and how long time it 
took.</li><li><a shape="rect" href="loading-routes-from-xml-files.html">Loading 
routes from XML files</a> into an existing <a shape="rect" 
href="camelcontext.html">CamelContext</a>.</li><li>Using <a shape="rect" 
href="mdc-logging.html">MDC logging</a> with Camel</li><li><a shape="rect" 
href="running-camel-standalone-and-have-it-keep-running.html">Running Camel 
standalone and have it keep running</a> shows how 
 to keep Camel running when you run it standalone.</li><li><a shape="rect" 
href="hazelcast-idempotent-repository-tutorial.html">Hazelcast Idempotent 
Repository Tutorial</a> shows how to avoid to consume duplicated messages in a 
clustered environment.</li><li><a shape="rect" 
href="how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html">How to 
use Camel as a HTTP proxy between a client and server</a> shows how to use 
Camel as a HTTP adapter/proxy between a client and HTTP service.</li></ul>
 
-<h2 id="BookInOnePage-BeanIntegration">Bean Integration</h2>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 id="BookInOnePage-BeanIntegration">Bean 
Integration</h2>
 
 <p>Camel supports the integration of beans and POJOs in a number of ways</p>
 
@@ -1184,8 +1184,8 @@ This document describes various recipes
 <p>We support a <a shape="rect" href="spring-remoting.html">Spring 
Remoting</a> provider which uses Camel as the underlying transport mechanism. 
The nice thing about this approach is we can use any of the Camel transport <a 
shape="rect" href="components.html">Components</a> to communicate between 
beans. It also means we can use <a shape="rect" 
href="content-based-router.html">Content Based Router</a> and the other <a 
shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a> in between the beans; in particular we can use <a shape="rect" 
href="message-translator.html">Message Translator</a> to be able to convert 
what the on-the-wire messages look like in addition to adding various headers 
and so forth. </p>
 
 <div class="confluence-information-macro 
confluence-information-macro-information conf-macro output-block" 
data-hasbody="true" data-macro-name="info"><p class="title">Bean 
binding</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"> </span><div 
class="confluence-information-macro-body">
-<p>Whenever Camel invokes a bean method via one of the above methods (<a 
shape="rect" href="bean.html">Bean</a> component, <a shape="rect" 
href="spring-remoting.html">Spring Remoting</a> or <a shape="rect" 
href="pojo-consuming.html">POJO Consuming</a>) then the <strong><a shape="rect" 
href="bean-binding.html">Bean Binding</a></strong> mechanism is used to figure 
out what method to use (if it is not explicit) and how to bind the <a 
shape="rect" href="message.html">Message</a> to the parameters possibly using 
the <a shape="rect" href="parameter-binding-annotations.html">Parameter Binding 
Annotations</a> or using a <a shape="rect" href="bean-binding.html">method name 
option</a>.</p></div></div>
-<h3 id="BookInOnePage-AnnotationBasedExpressionLanguage">Annotation Based 
Expression Language</h3>
+<p>Whenever Camel invokes a bean method via one of the above methods (<a 
shape="rect" href="bean.html">Bean</a> component, <a shape="rect" 
href="spring-remoting.html">Spring Remoting</a> or <a shape="rect" 
href="pojo-consuming.html">POJO Consuming</a>) then the <strong><a shape="rect" 
href="bean-binding.html">Bean Binding</a></strong> mechanism is used to figure 
out what method to use (if it is not explicit) and how to bind the <a 
shape="rect" href="message.html">Message</a> to the parameters possibly using 
the <a shape="rect" href="parameter-binding-annotations.html">Parameter Binding 
Annotations</a> or using a <a shape="rect" href="bean-binding.html">method name 
option</a>.</p></div></div></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h3 
id="BookInOnePage-AnnotationBasedExpressionLanguage">Annotation Based 
Expression Language</h3>
 
 <p>You can also use any of the <a shape="rect" 
href="languages.html">Languages</a> supported in Camel to bind expressions to 
method parameters when using <a shape="rect" href="bean-integration.html">Bean 
Integration</a>. For example you can use any of these annotations:</p>
 
@@ -1274,8 +1274,8 @@ public class MySimpleIdGenerator {
 </pre>
 </div></div>
 
-<p>Groovy supports GStrings that is like a template where we can insert $ 
placeholders that will be evaluated by Groovy.</p>
-<h2 id="BookInOnePage-BeanBinding">Bean Binding</h2><p>Bean Binding in Camel 
defines both which methods are invoked and also how the <a shape="rect" 
href="message.html">Message</a> is converted into the parameters of the method 
when it is invoked.</p><h3 
id="BookInOnePage-Choosingthemethodtoinvoke">Choosing the method to 
invoke</h3><p>The binding of a Camel <a shape="rect" 
href="message.html">Message</a> to a bean method call can occur in different 
ways, in the following order of importance:</p><ul><li>if the message contains 
the header <strong>CamelBeanMethodName</strong> then that method is invoked, 
converting the body to the type of the method's argument.<ul><li>From 
<strong>Camel 2.8</strong> onwards you can qualify parameter types to select 
exactly which method to use among overloads with the same name (see below for 
more details).</li><li>From <strong>Camel 2.9</strong> onwards you can specify 
parameter values directly in the method option (see below for more 
details).</li></u
 l></li><li>you can explicitly specify the method name in the <a shape="rect" 
href="dsl.html">DSL</a> or when using <a shape="rect" 
href="pojo-consuming.html">POJO Consuming</a> or <a shape="rect" 
href="pojo-producing.html">POJO Producing</a></li><li>if the bean has a method 
marked with the <code>@Handler</code> annotation, then that method is 
selected</li><li>if the bean can be converted to a <a shape="rect" 
href="processor.html">Processor</a> using the <a shape="rect" 
href="type-converter.html">Type Converter</a> mechanism, then this is used to 
process the message. The <a shape="rect" href="activemq.html">ActiveMQ</a> 
component uses this mechanism to allow any JMS MessageListener to be invoked 
directly by Camel without having to write any integration glue code. You can 
use the same mechanism to integrate Camel into any other messaging/remoting 
frameworks.</li><li>if the body of the message can be converted to a <a 
shape="rect" class="external-link" href="http://camel.apache.org/mav
 
en/current/camel-core/apidocs/org/apache/camel/component/bean/BeanInvocation.html">BeanInvocation</a>
 (the default payload used by the <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/bean/ProxyHelper.html";>ProxyHelper</a>)
 component - then that is used to invoke the method and pass its 
arguments</li><li>otherwise the type of the body is used to find a matching 
method; an error is thrown if a single method cannot be chosen 
unambiguously.</li><li>you can also use Exchange as the parameter itself, but 
then the return type must be void.</li><li>if the bean class is private (or 
package-private), interface methods will be preferred (from <strong>Camel 
2.9</strong> onwards) since Camel can't invoke class methods on such 
beans</li></ul><p>In cases where Camel cannot choose a method to invoke, an 
<code>AmbiguousMethodCallException</code> is thrown.</p><p>By default the 
return value is set on the outbound message 
 body.&#160;</p><h3 id="BookInOnePage-Asynchronousprocessing">Asynchronous 
processing</h3><p>From&#160;<strong>Camel 2.18</strong>&#160;onwards you can 
return a CompletionStage implementation (e.g. a CompletableFuture) to implement 
asynchronous processing.</p><p>Please be sure to properly complete the 
CompletionStage with the result or exception, including any timeout handling. 
Exchange processing would wait for completion and would not impose any timeouts 
automatically. It's extremely useful to monitor&#160;<a shape="rect" 
class="external-link" 
href="https://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/InflightRepository.html";>Inflight
 repository</a> for any hanging messages.</p><p>Note that completing with 
"null" won't set outbody message body to null, but would keep message intact. 
This is useful to support methods that don't modify exchange and return 
CompletableFuture&lt;Void&gt;. To set body to null, just add Exchange method 
parameter and directly modi
 fy exchange messages.</p><p>Examples:</p><p>Simple asynchronous processor, 
modifying message body.</p><div class="code panel pdl conf-macro output-block" 
data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<p>Groovy supports GStrings that is like a template where we can insert $ 
placeholders that will be evaluated by Groovy.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 id="BookInOnePage-BeanBinding">Bean 
Binding</h2><p>Bean Binding in Camel defines both which methods are invoked and 
also how the <a shape="rect" href="message.html">Message</a> is converted into 
the parameters of the method when it is invoked.</p><h3 
id="BookInOnePage-Choosingthemethodtoinvoke">Choosing the method to 
invoke</h3><p>The binding of a Camel <a shape="rect" 
href="message.html">Message</a> to a bean method call can occur in different 
ways, in the following order of importance:</p><ul><li>if the message contains 
the header <strong>CamelBeanMethodName</strong> then that method is invoked, 
converting the body to the type of the method's argument.<ul><li>From 
<strong>Camel 2.8</strong> onwards you can qualify parameter types to select 
exactly which method to use among overloads with the same name (see below for 
more details).</li><li>From <strong>Camel 2.9</strong> onwards you can specify 
 parameter values directly in the method option (see below for more 
details).</li></ul></li><li>you can explicitly specify the method name in the 
<a shape="rect" href="dsl.html">DSL</a> or when using <a shape="rect" 
href="pojo-consuming.html">POJO Consuming</a> or <a shape="rect" 
href="pojo-producing.html">POJO Producing</a></li><li>if the bean has a method 
marked with the <code>@Handler</code> annotation, then that method is 
selected</li><li>if the bean can be converted to a <a shape="rect" 
href="processor.html">Processor</a> using the <a shape="rect" 
href="type-converter.html">Type Converter</a> mechanism, then this is used to 
process the message. The <a shape="rect" href="activemq.html">ActiveMQ</a> 
component uses this mechanism to allow any JMS MessageListener to be invoked 
directly by Camel without having to write any integration glue code. You can 
use the same mechanism to integrate Camel into any other messaging/remoting 
frameworks.</li><li>if the body of the message can be co
 nverted to a <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/bean/BeanInvocation.html";>BeanInvocation</a>
 (the default payload used by the <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/bean/ProxyHelper.html";>ProxyHelper</a>)
 component - then that is used to invoke the method and pass its 
arguments</li><li>otherwise the type of the body is used to find a matching 
method; an error is thrown if a single method cannot be chosen 
unambiguously.</li><li>you can also use Exchange as the parameter itself, but 
then the return type must be void.</li><li>if the bean class is private (or 
package-private), interface methods will be preferred (from <strong>Camel 
2.9</strong> onwards) since Camel can't invoke class methods on such 
beans</li></ul><p>In cases where Camel cannot choose a method to invoke, an 
<code>AmbiguousMethodCallException
 </code> is thrown.</p><p>By default the return value is set on the outbound 
message body.&#160;</p><h3 
id="BookInOnePage-Asynchronousprocessing">Asynchronous 
processing</h3><p>From&#160;<strong>Camel 2.18</strong>&#160;onwards you can 
return a CompletionStage implementation (e.g. a CompletableFuture) to implement 
asynchronous processing.</p><p>Please be sure to properly complete the 
CompletionStage with the result or exception, including any timeout handling. 
Exchange processing would wait for completion and would not impose any timeouts 
automatically. It's extremely useful to monitor&#160;<a shape="rect" 
class="external-link" 
href="https://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/InflightRepository.html";>Inflight
 repository</a> for any hanging messages.</p><p>Note that completing with 
"null" won't set outbody message body to null, but would keep message intact. 
This is useful to support methods that don't modify exchange and return 
CompletableFuture&lt
 ;Void&gt;. To set body to null, just add Exchange method parameter and 
directly modify exchange messages.</p><p>Examples:</p><p>Simple asynchronous 
processor, modifying message body.</p><div class="code panel pdl conf-macro 
output-block" data-hasbody="true" data-macro-name="code" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">public 
CompletableFuture&lt;String&gt; doSomethingAsync(String body)</pre>
 </div></div><p><br clear="none">Composite processor that do not modify 
exchange</p><div class="code panel pdl conf-macro output-block" 
data-hasbody="true" data-macro-name="code" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">&#160;public 
CompletableFuture&lt;Void&gt; doSomethingAsync(String body) {
@@ -1349,8 +1349,8 @@ public class MySimpleIdGenerator {
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">.bean(OrderService.class, 
"doSomething(com.foo.MyOrder)")</pre>
 </div></div><p><br clear="none">Camel currently only supports either 
specifying parameter binding or type per parameter in the method name option. 
You <strong>cannot</strong> specify both at the same time, such as</p><div 
class="code panel pdl conf-macro output-block" data-hasbody="true" 
data-macro-name="code" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" 
data-theme="Default">&#160;doSomething(com.foo.MyOrder ${body}, boolean 
${header.high})</pre>
-</div></div><p>This may change in the future.</p>
-<h3 id="BookInOnePage-BeanInjection">Bean Injection</h3>
+</div></div><p>This may change in the future.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h3 id="BookInOnePage-BeanInjection">Bean 
Injection</h3>
 
 <p>We support the injection of various resources using @EndpointInject or 
@BeanInject. This can be used to inject</p>
 
@@ -1390,8 +1390,8 @@ public class MyRouteBuilder extends Rout
    @BeanInject
    MyFooBean foo;
 </pre>
-</div></div>
-<h3 id="BookInOnePage-ParameterBindingAnnotations">Parameter Binding 
Annotations</h3>
+</div></div></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h3 
id="BookInOnePage-ParameterBindingAnnotations">Parameter Binding 
Annotations</h3>
 
 <div class="confluence-information-macro 
confluence-information-macro-information conf-macro output-block" 
data-hasbody="true" data-macro-name="info"><p class="title">camel-core</p><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"> </span><div 
class="confluence-information-macro-body">
 <p>The annotations below are all part of <strong>camel-core</strong> and thus 
does not require <strong>camel-spring</strong> or <a shape="rect" 
href="spring.html">Spring</a>. These annotations can be used with the <a 
shape="rect" href="bean.html">Bean</a> component or when invoking beans in the 
<a shape="rect" href="dsl.html">DSL</a></p></div></div>
@@ -1471,7 +1471,7 @@ from("activemq:someQueue").
 </pre>
 </div></div>
 
-<h3 id="BookInOnePage-AnnotationBasedExpressionLanguage.1">Annotation Based 
Expression Language</h3>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h3 
id="BookInOnePage-AnnotationBasedExpressionLanguage.1">Annotation Based 
Expression Language</h3>
 
 <p>You can also use any of the <a shape="rect" 
href="languages.html">Languages</a> supported in Camel to bind expressions to 
method parameters when using <a shape="rect" href="bean-integration.html">Bean 
Integration</a>. For example you can use any of these annotations:</p>
 
@@ -1560,8 +1560,8 @@ public class MySimpleIdGenerator {
 </pre>
 </div></div>
 
-<p>Groovy supports GStrings that is like a template where we can insert $ 
placeholders that will be evaluated by Groovy.</p>
-<h4 id="BookInOnePage-@Consume">@Consume</h4>
+<p>Groovy supports GStrings that is like a template where we can insert $ 
placeholders that will be evaluated by Groovy.</p></div></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h4 id="BookInOnePage-@Consume">@Consume</h4>
 
 <p>To consume a message you use the <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Consume.html";>@Consume</a>
 annotation to mark a particular method of a bean as being a consumer method. 
The uri of the annotation defines the Camel <a shape="rect" 
href="endpoint.html">Endpoint</a> to consume from. </p>
 
@@ -1714,8 +1714,8 @@ Camel uses this algorithm to find the ge
 
 <p>Using the @Consume annotations are simpler when you are creating a simple 
route with a single well defined input URI. </p>
 
-<p>However if you require more complex routes or the same bean method needs to 
be invoked from many places then please use the routing <a shape="rect" 
href="dsl.html">DSL</a> as shown above.</p>
-There are two different ways to send messages to any Camel <a shape="rect" 
href="endpoint.html">Endpoint</a> from a POJO<h4 
id="BookInOnePage-@EndpointInject"><code>@EndpointInject</code></h4><p>To allow 
sending of messages from POJOs you can use the <a shape="rect" 
class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/EndpointInject.html";>@EndpointInject</a>
 annotation. This will inject a <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/ProducerTemplate.html";>ProducerTemplate</a>
 so that the bean can participate in message exchanges.</p><p>Example: send a 
message to the <strong><code>foo.bar</code></strong> ActiveMQ queue:</p><div 
class="code panel pdl conf-macro output-block" data-hasbody="true" 
data-macro-name="code" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<p>However if you require more complex routes or the same bean method needs to 
be invoked from many places then please use the routing <a shape="rect" 
href="dsl.html">DSL</a> as shown above.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include">There are two different ways to send messages to any 
Camel <a shape="rect" href="endpoint.html">Endpoint</a> from a POJO<h4 
id="BookInOnePage-@EndpointInject"><code>@EndpointInject</code></h4><p>To allow 
sending of messages from POJOs you can use the <a shape="rect" 
class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/EndpointInject.html";>@EndpointInject</a>
 annotation. This will inject a <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/ProducerTemplate.html";>ProducerTemplate</a>
 so that the bean can participate in message exchanges.</p><p>Example: send a 
message to the <strong><code>foo.bar</code></strong> ActiveMQ queue:</p><div 
class="code panel pdl conf-macro output-block" data-hasbody="true" 
data-macro-name="code" style="border-width: 1px;"><div class="codeContent 
panelContent pd
 l">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">public class Foo {
   @EndpointInject(uri="activemq:foo.bar")
   ProducerTemplate producer;
@@ -1742,8 +1742,8 @@ public class MyBean {
     }
 }
 </pre>
-</div></div><p>Here Camel will automatically inject a smart client side proxy 
at the&#160;<strong><code>@Produce</code></strong> annotation - an instance of 
the&#160;<strong><code>MyListener</code></strong> instance. When we invoke 
methods on this interface the method call is turned into an object and using 
the Camel <a shape="rect" href="spring-remoting.html">Spring Remoting</a> 
mechanism it is sent to the endpoint - in this case the <a shape="rect" 
href="activemq.html">ActiveMQ</a> endpoint to queue 
<strong><code>foo</code></strong>; then the caller blocks for a 
response.</p><p>If you want to make asynchronous message sends then use <a 
shape="rect" href="using-exchange-pattern-annotations.html">an @InOnly 
annotation on the injection point</a>.</p>
-<h2 id="BookInOnePage-@RecipientListAnnotation">@RecipientList Annotation</h2>
+</div></div><p>Here Camel will automatically inject a smart client side proxy 
at the&#160;<strong><code>@Produce</code></strong> annotation - an instance of 
the&#160;<strong><code>MyListener</code></strong> instance. When we invoke 
methods on this interface the method call is turned into an object and using 
the Camel <a shape="rect" href="spring-remoting.html">Spring Remoting</a> 
mechanism it is sent to the endpoint - in this case the <a shape="rect" 
href="activemq.html">ActiveMQ</a> endpoint to queue 
<strong><code>foo</code></strong>; then the caller blocks for a 
response.</p><p>If you want to make asynchronous message sends then use <a 
shape="rect" href="using-exchange-pattern-annotations.html">an @InOnly 
annotation on the injection point</a>.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 
id="BookInOnePage-@RecipientListAnnotation">@RecipientList Annotation</h2>
 
 <p>We support the use of @RecipientList on a bean method to easily create a 
dynamic <a shape="rect" href="recipient-list.html">Recipient List</a> using a 
Java method.</p>
 
@@ -1844,8 +1844,8 @@ public class MyRouteBuilder extends Rout
 
 
 <p>Notice how we are injecting some headers or expressions and using them to 
determine the recipients using <a shape="rect" 
href="recipient-list.html">Recipient List</a> EIP.<br clear="none">
-See the <a shape="rect" href="bean-integration.html">Bean Integration</a> for 
more details.</p>
-<h2 id="BookInOnePage-UsingExchangePatternAnnotations">Using Exchange Pattern 
Annotations</h2>
+See the <a shape="rect" href="bean-integration.html">Bean Integration</a> for 
more details.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 
id="BookInOnePage-UsingExchangePatternAnnotations">Using Exchange Pattern 
Annotations</h2>
 
 <p>When working with <a shape="rect" href="pojo-producing.html">POJO 
Producing</a> or <a shape="rect" href="spring-remoting.html">Spring 
Remoting</a> you invoke methods which typically by default are InOut for <a 
shape="rect" href="request-reply.html">Request Reply</a>. That is there is an 
In message and an Out for the result. Typically invoking this operation will be 
synchronous, the caller will block until the server returns a result.</p>
 
@@ -1951,8 +1951,8 @@ public interface Foo {
   String someInOutMethod(String input); 
 }
 </pre>
-</div></div>
-When writing software these days, its important to try and decouple as much 
middleware code from your business logic as possible. 
+</div></div></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include">When writing software these days, its important to 
try and decouple as much middleware code from your business logic as possible. 
 
 <p>This provides a number of benefits...</p>
 <ul><li>you can choose the right middleware solution for your deployment and 
switch at any time</li><li>you don't have to spend a large amount of time 
learning the specifics of any particular technology, whether its <a 
shape="rect" href="jms.html">JMS</a> or <a shape="rect" 
href="javaspace.html">JavaSpace</a> or <a shape="rect" 
href="hibernate.html">Hibernate</a> or <a shape="rect" href="jpa.html">JPA</a> 
or <a shape="rect" href="ibatis.html">iBatis</a> whatever</li></ul>
@@ -1968,9 +1968,9 @@ When writing software these days, its im
 
 <p>The best approach when using remoting is to use <a shape="rect" 
href="spring-remoting.html">Spring Remoting</a> which can then use any 
messaging or remoting technology under the covers. When using Camel's 
implementation you can then use any of the Camel <a shape="rect" 
href="components.html">Components</a> along with any of the <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a>.</p>
 
-<p>Another approach is to bind Java beans to Camel endpoints via the <a 
shape="rect" href="bean-integration.html">Bean Integration</a>. For example 
using <a shape="rect" href="pojo-consuming.html">POJO Consuming</a> and <a 
shape="rect" href="pojo-producing.html">POJO Producing</a> you can avoid using 
any Camel APIs to decouple your code both from middleware APIs <em>and</em> 
Camel APIs! <img class="emoticon emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/smile.svg";
 data-emoticon-name="smile" alt="(smile)"></p>
-<h2 id="BookInOnePage-Visualisation">Visualisation</h2><div 
class="confluence-information-macro confluence-information-macro-warning 
conf-macro output-block" data-hasbody="true" data-macro-name="warning"><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"> </span><div 
class="confluence-information-macro-body"><p>This functionality is deprecated 
and to be removed in future Camel 
releases.</p></div></div><p>&#160;</p><p>Camel supports the visualisation of 
your <a shape="rect" href="enterprise-integration-patterns.html">Enterprise 
Integration Patterns</a> using the <a shape="rect" class="external-link" 
href="http://graphviz.org"; rel="nofollow">GraphViz</a> DOT files which can 
either be rendered directly via a suitable GraphViz tool or turned into HTML, 
PNG or SVG files via the <a shape="rect" href="camel-maven-plugin.html">Camel 
Maven Plugin</a>.</p><p>Here is a <a shape="rect" class="external-link" 
href="http://activemq.apache.org/camel/maven/cam
 el-spring/cameldoc/index.html">typical example</a> of the kind of thing we can 
generate</p><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="book-in-one-page.data/org.apache.camel.example.docs.ContentBasedRouteRoute.png"
 
data-image-src="/confluence/download/attachments/64021/org.apache.camel.example.docs.ContentBasedRouteRoute.png?version=1&amp;modificationDate=1229506014000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9437" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="org.apache.camel.example.docs.ContentBasedRouteRoute.png"
 data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="64021" 
data-linked-resource-container-version="18"></span></p><p>If you click on <a 
shape="rect" class="external-link" 
href="http://activemq.apache.org/camel/maven/examples/camel-example-docs/cameldo
 c/main/routes.html">the actual generated html</a>you will see that you can 
navigate from an EIP node to its pattern page, along with getting hover-over 
tool tips ec.</p><h3 id="BookInOnePage-Howtogenerate">How to 
generate</h3><p>See <a shape="rect" href="camel-dot-maven-goal.html">Camel Dot 
Maven Goal</a> or the other maven goals <a shape="rect" 
href="camel-maven-plugin.html">Camel Maven Plugin</a></p><h3 
id="BookInOnePage-ForOSXusers">For OS X users</h3><p>If you are using OS X then 
you can open the DOT file using <a shape="rect" class="external-link" 
href="http://www.pixelglow.com/graphviz/"; rel="nofollow">graphviz</a> which 
will then automatically re-render if it changes, so you end up with a real time 
graphical representation of the topic and queue hierarchies!</p><p>Also if you 
want to edit the layout a little before adding it to a wiki to distribute to 
your team, open the DOT file with <a shape="rect" class="external-link" 
href="http://www.omnigroup.com/applications/omnigraffl
 e/" rel="nofollow">OmniGraffle</a> then just edit away <img class="emoticon 
emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/smile.svg";
 data-emoticon-name="smile" alt="(smile)"></p>
-<h2 id="BookInOnePage-BusinessActivityMonitoring">Business Activity Monitoring 
</h2>
+<p>Another approach is to bind Java beans to Camel endpoints via the <a 
shape="rect" href="bean-integration.html">Bean Integration</a>. For example 
using <a shape="rect" href="pojo-consuming.html">POJO Consuming</a> and <a 
shape="rect" href="pojo-producing.html">POJO Producing</a> you can avoid using 
any Camel APIs to decouple your code both from middleware APIs <em>and</em> 
Camel APIs! <img class="emoticon emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/smile.svg";
 data-emoticon-name="smile" alt="(smile)"></p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 
id="BookInOnePage-Visualisation">Visualisation</h2><div 
class="confluence-information-macro confluence-information-macro-warning 
conf-macro output-block" data-hasbody="true" data-macro-name="warning"><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"> </span><div 
class="confluence-information-macro-body"><p>This functionality is deprecated 
and to be removed in future Camel 
releases.</p></div></div><p>&#160;</p><p>Camel supports the visualisation of 
your <a shape="rect" href="enterprise-integration-patterns.html">Enterprise 
Integration Patterns</a> using the <a shape="rect" class="external-link" 
href="http://graphviz.org"; rel="nofollow">GraphViz</a> DOT files which can 
either be rendered directly via a suitable GraphViz tool or turned into HTML, 
PNG or SVG files via the <a shape="rect" href="camel-maven-plugin.html">Camel 
Maven Plugin</a>.</p><p>Here is a <a
  shape="rect" class="external-link" 
href="http://activemq.apache.org/camel/maven/camel-spring/cameldoc/index.html";>typical
 example</a> of the kind of thing we can generate</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src="book-in-one-page.data/org.apache.camel.example.docs.ContentBasedRouteRoute.png"
 
data-image-src="/confluence/download/attachments/64021/org.apache.camel.example.docs.ContentBasedRouteRoute.png?version=1&amp;modificationDate=1229506014000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9437" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="org.apache.camel.example.docs.ContentBasedRouteRoute.png"
 data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="64021" 
data-linked-resource-container-version="18"></span></p><p>If you click on <a 
shape="rect" class="external-li
 nk" 
href="http://activemq.apache.org/camel/maven/examples/camel-example-docs/cameldoc/main/routes.html";>the
 actual generated html</a>you will see that you can navigate from an EIP node 
to its pattern page, along with getting hover-over tool tips ec.</p><h3 
id="BookInOnePage-Howtogenerate">How to generate</h3><p>See <a shape="rect" 
href="camel-dot-maven-goal.html">Camel Dot Maven Goal</a> or the other maven 
goals <a shape="rect" href="camel-maven-plugin.html">Camel Maven 
Plugin</a></p><h3 id="BookInOnePage-ForOSXusers">For OS X users</h3><p>If you 
are using OS X then you can open the DOT file using <a shape="rect" 
class="external-link" href="http://www.pixelglow.com/graphviz/"; 
rel="nofollow">graphviz</a> which will then automatically re-render if it 
changes, so you end up with a real time graphical representation of the topic 
and queue hierarchies!</p><p>Also if you want to edit the layout a little 
before adding it to a wiki to distribute to your team, open the DOT file with 
<a shape
 ="rect" class="external-link" 
href="http://www.omnigroup.com/applications/omnigraffle/"; 
rel="nofollow">OmniGraffle</a> then just edit away <img class="emoticon 
emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/7701/d7b403a44466e5e8970db7530201039d865e79e1/_/images/icons/emoticons/smile.svg";
 data-emoticon-name="smile" alt="(smile)"></p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 
id="BookInOnePage-BusinessActivityMonitoring">Business Activity Monitoring </h2>
 
 <p>The <strong>Camel BAM</strong> module provides a Business Activity 
Monitoring (BAM) framework for testing business processes across multiple 
message exchanges on different <a shape="rect" 
href="endpoint.html">Endpoint</a> instances.</p>
 
@@ -1996,15 +1996,15 @@ When writing software these days, its im
 
 <h3 id="BookInOnePage-UseCases">Use Cases</h3>
 
-<p>In the world of finance, a common requirement is tracking trades. Often a 
trader will submit a Front Office Trade which then flows through the Middle 
Office and Back Office through various systems to settle the trade so that 
money is exchanged. You may wish to test that the front and back office trades 
match up within a certain time period; if they don't match or a back office 
trade does not arrive within a required amount of time, you might signal an 
alarm.</p>
-<h2 id="BookInOnePage-ExtractTransformLoad(ETL)">Extract Transform Load 
(ETL)</h2>
+<p>In the world of finance, a common requirement is tracking trades. Often a 
trader will submit a Front Office Trade which then flows through the Middle 
Office and Back Office through various systems to settle the trade so that 
money is exchanged. You may wish to test that the front and back office trades 
match up within a certain time period; if they don't match or a back office 
trade does not arrive within a required amount of time, you might signal an 
alarm.</p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 
id="BookInOnePage-ExtractTransformLoad(ETL)">Extract Transform Load (ETL)</h2>
 
 <p>The <a shape="rect" class="external-link" 
href="http://en.wikipedia.org/wiki/Extract,_transform,_load"; 
rel="nofollow">ETL</a> (Extract, Transform, Load) is a mechanism for loading 
data into systems or databases using some kind of <a shape="rect" 
href="data-format.html">Data Format</a> from a variety of sources; often files 
then using <a shape="rect" href="pipes-and-filters.html">Pipes and Filters</a>, 
<a shape="rect" href="message-translator.html">Message Translator</a> and 
possible other <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a>.</p>
 
 <p>So you could query data from various Camel <a shape="rect" 
href="components.html">Components</a> such as <a shape="rect" 
href="file2.html">File</a>, <a shape="rect" href="http.html">HTTP</a> or <a 
shape="rect" href="jpa.html">JPA</a>, perform multiple patterns such as <a 
shape="rect" href="splitter.html">Splitter</a> or <a shape="rect" 
href="message-translator.html">Message Translator</a> then send the messages to 
some other <a shape="rect" href="component.html">Component</a>.</p>
 
-<p>To show how this all fits together, try the <a shape="rect" 
href="etl-example.html">ETL Example</a> </p>
-<h2 id="BookInOnePage-MockComponent">Mock Component</h2><p><parameter 
ac:name=""><a shape="rect" href="testing-summary-include.html">Testing Summary 
Include</a></parameter></p><p>The Mock component provides a powerful 
declarative testing mechanism, which is similar to <a shape="rect" 
class="external-link" href="http://www.jmock.org"; rel="nofollow">jMock</a><a 
shape="rect" class="external-link" href="http://jmock.org"; rel="nofollow"></a> 
in that it allows declarative expectations to be created on any Mock endpoint 
before a test begins. Then the test is run, which typically fires messages to 
one or more endpoints, and finally the expectations can be asserted in a test 
case to ensure the system worked as expected.</p><p>This allows you to test 
various things like:</p><ul><li>The correct number of messages are received on 
each endpoint,</li><li>The correct payloads are received, in the right 
order,</li><li>Messages arrive on an endpoint in order, using some <a 
shape="rect" href="express
 ion.html">Expression</a> to create an order testing function,</li><li>Messages 
arrive match some kind of <a shape="rect" href="predicate.html">Predicate</a> 
such as that specific headers have certain values, or that parts of the 
messages match some predicate, such as by evaluating an <a shape="rect" 
href="xpath.html">XPath</a> or <a shape="rect" href="xquery.html">XQuery</a> <a 
shape="rect" 
href="expression.html">Expression</a>.</li></ul><p><strong>Note</strong> that 
there is also the <a shape="rect" href="test.html">Test endpoint</a> which is a 
Mock endpoint, but which uses a second endpoint to provide the list of expected 
message bodies and automatically sets up the Mock endpoint assertions. In other 
words, it's a Mock endpoint that automatically sets up its assertions from some 
sample messages in a <a shape="rect" href="file2.html">File</a> or <a 
shape="rect" href="jpa.html">database</a>, for example.</p><parameter 
ac:name="title">Mock endpoints keep received Exchanges in memory 
 indefinitely</parameter><rich-text-body><p>Remember that Mock is designed for 
testing. When you add Mock endpoints to a route, each <a shape="rect" 
href="exchange.html">Exchange</a> sent to the endpoint will be stored (to allow 
for later validation) in memory until explicitly reset or the JVM is restarted. 
If you are sending high volume and/or large messages, this may cause excessive 
memory use. If your goal is to test deployable routes inline, consider using <a 
shape="rect" href="notifybuilder.html">NotifyBuilder</a> or <a shape="rect" 
href="advicewith.html">AdviceWith</a> in your tests instead of adding Mock 
endpoints to routes directly.</p><p>From Camel 2.10 onwards there are two new 
options <code>retainFirst</code>, and <code>retainLast</code> that can be used 
to limit the number of messages the Mock endpoints keep in 
memory.</p></rich-text-body><h3 id="BookInOnePage-URIformat">URI 
format</h3><plain-text-body>mock:someName[?options]
+<p>To show how this all fits together, try the <a shape="rect" 
href="etl-example.html">ETL Example</a> </p></div>
+<div class="conf-macro output-block" data-hasbody="false" 
data-macro-name="include"><h2 id="BookInOnePage-MockComponent">Mock 
Component</h2><p><parameter ac:name=""><a shape="rect" 
href="testing-summary-include.html">Testing Summary 
Include</a></parameter></p><p>The Mock component provides a powerful 
declarative testing mechanism, which is similar to <a shape="rect" 
class="external-link" href="http://www.jmock.org"; rel="nofollow">jMock</a><a 
shape="rect" class="external-link" href="http://jmock.org"; rel="nofollow"></a> 
in that it allows declarative expectations to be created on any Mock endpoint 
before a test begins. Then the test is run, which typically fires messages to 
one or more endpoints, and finally the expectations can be asserted in a test 
case to ensure the system worked as expected.</p><p>This allows you to test 
various things like:</p><ul><li>The correct number of messages are received on 
each endpoint,</li><li>The correct payloads are received, in the right 
order,</li><
 li>Messages arrive on an endpoint in order, using some <a shape="rect" 
href="expression.html">Expression</a> to create an order testing 
function,</li><li>Messages arrive match some kind of <a shape="rect" 
href="predicate.html">Predicate</a> such as that specific headers have certain 
values, or that parts of the messages match some predicate, such as by 
evaluating an <a shape="rect" href="xpath.html">XPath</a> or <a shape="rect" 
href="xquery.html">XQuery</a> <a shape="rect" 
href="expression.html">Expression</a>.</li></ul><p><strong>Note</strong> that 
there is also the <a shape="rect" href="test.html">Test endpoint</a> which is a 
Mock endpoint, but which uses a second endpoint to provide the list of expected 
message bodies and automatically sets up the Mock endpoint assertions. In other 
words, it's a Mock endpoint that automatically sets up its assertions from some 
sample messages in a <a shape="rect" href="file2.html">File</a> or <a 
shape="rect" href="jpa.html">database</a>, for exam
 ple.</p><parameter ac:name="title">Mock endpoints keep received Exchanges in 
memory indefinitely</parameter><rich-text-body><p>Remember that Mock is 
designed for testing. When you add Mock endpoints to a route, each <a 
shape="rect" href="exchange.html">Exchange</a> sent to the endpoint will be 
stored (to allow for later validation) in memory until explicitly reset or the 
JVM is restarted. If you are sending high volume and/or large messages, this 
may cause excessive memory use. If your goal is to test deployable routes 
inline, consider using <a shape="rect" 
href="notifybuilder.html">NotifyBuilder</a> or <a shape="rect" 
href="advicewith.html">AdviceWith</a> in your tests instead of adding Mock 
endpoints to routes directly.</p><p>From Camel 2.10 onwards there are two new 
options <code>retainFirst</code>, and <code>retainLast</code> that can be used 
to limit the number of messages the Mock endpoints keep in 
memory.</p></rich-text-body><h3 id="BookInOnePage-URIformat">URI format</h3><pl
 ain-text-body>mock:someName[?options]
 </plain-text-body><p>Where <strong>someName</strong> can be any string that 
uniquely identifies the endpoint.</p><p>You can append query options to the URI 
in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="BookInOnePage-Options">Options</h3><parameter 
ac:name="class">confluenceTableSmall</parameter><rich-text-body><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>reportGroup</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>A size to use a <a shape="rect" 
href="log.html">throughput logger</a> for reporting</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluence
 Td"><p><code>retainFirst</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.10:</strong> To only keep first X 
number of messages in memory.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>retainLast</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.10:</strong> To only keep last X number 
of messages in memory.</p></td></tr></tbody></table></div></rich-text-body><h3 
id="BookInOnePage-SimpleExample.1">Simple Example</h3><p>Here's a simple 
example of Mock endpoint in use. First, the endpoint is resolved on the 
context. Then we set an expectation, and then, after the test has run, we 
assert that our expectations have been met.</p><plain-text-body>MockEndpoint 
resultEndpoint = context.resolveEndpoint("mock:foo", MockEndpoint.class);
 
 resultEndpoint.expectedMessageCount(2);
@@ -2042,9 +2042,9 @@ resultEndpoint.assertIsSatisfied();
 </plain-text-body><p>You can also define this as that 2nd message (0 index 
based) should arrive no later than 0-2 seconds after the 
previous:</p><plain-text-body>mock.message(1).arrives().noLaterThan(2).seconds().afterPrevious();
 </plain-text-body><p>You can also use between to set a lower bound. For 
example suppose that it should be between 1-4 
seconds:</p><plain-text-body>mock.message(1).arrives().between(1, 
4).seconds().afterPrevious();
 </plain-text-body><p>You can also set the expectation on all messages, for 
example to say that the gap between them should be at most 1 
second:</p><plain-text-body>mock.allMessages().arrives().noLaterThan(1).seconds().beforeNext();
-</plain-text-body><parameter ac:name="title">time 
units</parameter><rich-text-body><p>In the example above we use 
<code>seconds</code> as the time unit, but Camel offers 
<code>milliseconds</code>, and <code>minutes</code> as 
well.</p></rich-text-body><p><parameter ac:name=""><a shape="rect" 
href="endpoint-see-also.html">Endpoint See Also</a></parameter></p><ul><li><a 
shape="rect" href="spring-testing.html">Spring Testing</a></li><li><a 
shape="rect" href="testing.html">Testing</a></li></ul>

[... 2273 lines stripped ...]

Reply via email to