You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2017/06/11 03:29:18 UTC

svn commit: r1013803 [4/8] - in /websites/production/camel/content: ./ cache/

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 Sun Jun 11 03:29:17 2017
@@ -102,7 +102,7 @@
 <div class="chapter page-reset" id="chapter-introduction">
 <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/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p><div class="confluence-information-macro confluence-information-macro-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/questions/8845186/what-exactly-is-apache-camel" rel="nofollow">Stac
 k Overflow</a>. We suggest you view the post, read the comments, and browse the suggested links for more details.</p></div></div></div>
+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/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p><div class="confluence-information-macro confluence-information-macro-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/questions/8845186/what-exactly-is-apache-camel" rel="nofollow">Stac
 k 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="chapter page-reset" id="chapter-quickstart">
@@ -145,7 +145,7 @@ for (int i = 0; i &lt; 10; i++) {
 <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/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"></p>
+<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/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"></p>
 
 <p>First we take a moment to look at the <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a> - the base pattern catalog for integration scenarios. In particular we focus on <a shape="rect" href="pipes-and-filters.html">Pipes and filters</a> - a central pattern. This is used to route messages through a sequence of processing steps, each performing a specific function - much like the Java Servlet Filters. </p>
 
@@ -251,7 +251,7 @@ for (int i = 0; i &lt; 10; i++) {
 2. the output from validateOrder bean is sent as text to the mainframe using TCP<br clear="none">
 3. the output from mainframe is sent back as input to the sendConfirmEmai bean</p>
 
-<p>What to notice here is that the <code>to</code> is not the end of the route (the world <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">) in this example it's used in the middle of the <a shape="rect" href="pipes-and-filters.html">Pipes and filters</a>. In fact we can change the <code>bean</code> types to <code>to</code> as well:</p>
+<p>What to notice here is that the <code>to</code> is not the end of the route (the world <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">) in this example it's used in the middle of the <a shape="rect" href="pipes-and-filters.html">Pipes and filters</a>. In fact we can change the <code>bean</code> types to <code>to</code> as well:</p>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
@@ -792,7 +792,7 @@ flink:datastream[?options]]]></script>
 <script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[lumberjack:host[:port]]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;Uses the Lumberjack protocol for retrieving logs (from Filebeat for instance)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="metrics-component.html">Metrics</a> /&#160;<code>camel-metrics</code></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[metrics:[meter|counter|histogram|timer]:metricname[?options]]]></script>
-</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="line-height: 1.4285715;">Uses </span> <a shape="rect" class="external-link" href="http://metrics.codahale.com/" style="line-height: 1.4285715;" rel="nofollow">Metrics</a> <span style="line-height: 1.4285715;">&#160;</span> <span style="line-height: 1.4285715;"> to collect application statistics directly from Camel routes.</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="mina.html">MINA</a> /&#160;<code>camel-mina</code></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="line-height: 1.4285715;">Uses </span> <a shape="rect" class="external-link" href="http://metrics.codahale.com/" rel="nofollow" style="line-height: 1.4285715;">Metrics</a> <span style="line-height: 1.4285715;">&#160;</span> <span style="line-height: 1.4285715;"> to collect application statistics directly from Camel routes.</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="mina.html">MINA</a> /&#160;<code>camel-mina</code></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: plain; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[mina:[tcp|udp|vm]:host[:port][?options]
 ]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Working with <a shape="rect" class="external-link" href="http://mina.apache.org/">Apache MINA 1.x</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="mina2.html">MINA2</a> /&#160;<code>camel-mina2</code></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -2061,8 +2061,8 @@ 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/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
-<h2 id="BookInOnePage-Visualisation">Visualisation</h2><div class="confluence-information-macro confluence-information-macro-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-link" 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="emot
 icon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></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/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
+<h2 id="BookInOnePage-Visualisation">Visualisation</h2><div class="confluence-information-macro confluence-information-macro-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-link" 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="emot
 icon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
 <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>
@@ -2425,7 +2425,7 @@ public class IsMockEndpointsAndSkipJUnit
 ]]></script>
 </div></div><div class="confluence-information-macro confluence-information-macro-tip"><p class="title">time units</p><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-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></div></div><p></p><h3 id="BookInOnePage-SeeAlso">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="spring-testing.html">Spring Testing</a></li><li><a shape="rect" href="testing.html">Testing</a></li></ul>
-<h2 id="BookInOnePage-Testing">Testing</h2><p>Testing is a crucial activity in any piece of software development or integration. Typically Camel Riders use various different <a shape="rect" href="components.html">technologies</a> wired together in a variety of <a shape="rect" href="enterprise-integration-patterns.html">patterns</a> with different <a shape="rect" href="languages.html">expression languages</a> together with different forms of <a shape="rect" href="bean-integration.html">Bean Integration</a> and <a shape="rect" href="dependency-injection.html">Dependency Injection</a> so its very easy for things to go wrong! <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"> . Testing is the crucial weapon to ensure that things work as you would expect.</p><p>Camel is a Java library so you can easily wire up tests in whatever u
 nit testing framework you use (JUnit 3.x (deprecated), 4.x, or TestNG). However the Camel project has tried to make the testing of Camel as easy and powerful as possible so we have introduced the following features.</p><h3 id="BookInOnePage-TestingMechanisms">Testing Mechanisms</h3><p>The following mechanisms are supported:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Component</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="camel-test.html">Camel Test</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-test</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Is a standalone Java library letting you easily create Camel test cases using a single Java class for all your configuration and routing
  without using <a shape="rect" href="cdi.html">CDI</a>, <a shape="rect" href="spring.html">Spring</a> or <a shape="rect" href="guice.html">Guice</a> for <a shape="rect" href="dependency-injection.html">Dependency Injection</a>&#160;which does not require an in-depth knowledge of Spring + Spring Test or Guice. &#160;Supports JUnit 3.x (deprecated) and JUnit 4.x based tests.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><a shape="rect" href="cdi-testing.html">CDI Testing</a></td><td colspan="1" rowspan="1" class="confluenceTd"><code>camel-test-cdi</code></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Provides a JUnit 4 runner that bootstraps a test environment using CDI so that you don't have to be familiar with any CDI testing frameworks and can concentrate on the testing logic of your Camel CDI applications. Testing frameworks like&#160;<a shape="rect" class="external-link" href="http://arquillian.org/" rel="nofollow">Arquillian</a>&#160;or&#160;<a shape
 ="rect" class="external-link" href="https://ops4j1.jira.com/wiki/display/PAXEXAM4" rel="nofollow">PAX Exam</a>, can be used for more advanced test cases, where you need to configure your system under test in a very fine-grained way or target specific CDI containers.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="spring-testing.html">Spring Testing</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-test-spring</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Supports JUnit 3.x (deprecated) or JUnit 4.x based tests that bootstrap a test environment using Spring without needing to be familiar with Spring Test. The plain JUnit 3.x/4.x based tests work very similar to the test support classes in <strong><code>camel-test</code></strong>.</p><p>Also supports Spring Test based tests that use the declarative style of test configuration and injection common in Spring Test. The Spring Test based tests provid
 e feature parity with the plain JUnit 3.x/4.x based testing approach.</p><p><strong>Note</strong>: <strong><code>camel-test-spring</code></strong> is a new component from <strong>Camel 2.10</strong>. For older Camel release use <strong><code>camel-test</code></strong> which has built-in <a shape="rect" href="spring-testing.html">Spring Testing</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="blueprint-testing.html">Blueprint Testing</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-test-blueprint</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> Provides the ability to do unit testing on blueprint configurations</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="guice.html">Guice</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-guice</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>
 <span style="color: rgb(255,0,0);"><strong>Deprecated</strong></span></p><p>Uses <a shape="rect" href="guice.html">Guice</a> to dependency inject your test classes</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Camel TestNG</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-testng</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(255,0,0);"><strong>Deprecated</strong></span></p><p>Supports plain TestNG based tests&#160;with or without <a shape="rect" href="cdi.html">CDI</a>,&#160;<a shape="rect" href="spring.html">Spring</a>&#160;or&#160;<a shape="rect" href="guice.html">Guice</a>&#160;for&#160;<a shape="rect" href="dependency-injection.html">Dependency Injection</a>&#160;which does not require an in-depth knowledge of CDI, Spring + Spring Test or Guice. &#160;</p><p>From <strong>Camel 2.10</strong>: this component supports Spring Test&#160;based tests that use the declarative style of test configura
 tion and injection common in Spring Test and described in more detail under <a shape="rect" href="spring-testing.html">Spring Testing</a>.</p></td></tr></tbody></table></div><p>In all approaches the test classes look pretty much the same in that they all reuse the <a shape="rect" href="bean-integration.html">Camel binding and injection annotations</a>.</p><h4 id="BookInOnePage-CamelTestExample">Camel Test Example</h4><p>Here is the <a shape="rect" href="camel-test.html">Camel Test</a> <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java">example</a>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h2 id="BookInOnePage-Testing">Testing</h2><p>Testing is a crucial activity in any piece of software development or integration. Typically Camel Riders use various different <a shape="rect" href="components.html">technologies</a> wired together in a variety of <a shape="rect" href="enterprise-integration-patterns.html">patterns</a> with different <a shape="rect" href="languages.html">expression languages</a> together with different forms of <a shape="rect" href="bean-integration.html">Bean Integration</a> and <a shape="rect" href="dependency-injection.html">Dependency Injection</a> so its very easy for things to go wrong! <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"> . Testing is the crucial weapon to ensure that things work as you would expect.</p><p>Camel is a Java library so you can easily wire up tests in whatever u
 nit testing framework you use (JUnit 3.x (deprecated), 4.x, or TestNG). However the Camel project has tried to make the testing of Camel as easy and powerful as possible so we have introduced the following features.</p><h3 id="BookInOnePage-TestingMechanisms">Testing Mechanisms</h3><p>The following mechanisms are supported:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Component</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="camel-test.html">Camel Test</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-test</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Is a standalone Java library letting you easily create Camel test cases using a single Java class for all your configuration and routing
  without using <a shape="rect" href="cdi.html">CDI</a>, <a shape="rect" href="spring.html">Spring</a> or <a shape="rect" href="guice.html">Guice</a> for <a shape="rect" href="dependency-injection.html">Dependency Injection</a>&#160;which does not require an in-depth knowledge of Spring + Spring Test or Guice. &#160;Supports JUnit 3.x (deprecated) and JUnit 4.x based tests.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><a shape="rect" href="cdi-testing.html">CDI Testing</a></td><td colspan="1" rowspan="1" class="confluenceTd"><code>camel-test-cdi</code></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Provides a JUnit 4 runner that bootstraps a test environment using CDI so that you don't have to be familiar with any CDI testing frameworks and can concentrate on the testing logic of your Camel CDI applications. Testing frameworks like&#160;<a shape="rect" class="external-link" href="http://arquillian.org/" rel="nofollow">Arquillian</a>&#160;or&#160;<a shape
 ="rect" class="external-link" href="https://ops4j1.jira.com/wiki/display/PAXEXAM4" rel="nofollow">PAX Exam</a>, can be used for more advanced test cases, where you need to configure your system under test in a very fine-grained way or target specific CDI containers.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="spring-testing.html">Spring Testing</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-test-spring</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Supports JUnit 3.x (deprecated) or JUnit 4.x based tests that bootstrap a test environment using Spring without needing to be familiar with Spring Test. The plain JUnit 3.x/4.x based tests work very similar to the test support classes in <strong><code>camel-test</code></strong>.</p><p>Also supports Spring Test based tests that use the declarative style of test configuration and injection common in Spring Test. The Spring Test based tests provid
 e feature parity with the plain JUnit 3.x/4.x based testing approach.</p><p><strong>Note</strong>: <strong><code>camel-test-spring</code></strong> is a new component from <strong>Camel 2.10</strong>. For older Camel release use <strong><code>camel-test</code></strong> which has built-in <a shape="rect" href="spring-testing.html">Spring Testing</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="blueprint-testing.html">Blueprint Testing</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-test-blueprint</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> Provides the ability to do unit testing on blueprint configurations</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="guice.html">Guice</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-guice</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>
 <span style="color: rgb(255,0,0);"><strong>Deprecated</strong></span></p><p>Uses <a shape="rect" href="guice.html">Guice</a> to dependency inject your test classes</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Camel TestNG</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camel-testng</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(255,0,0);"><strong>Deprecated</strong></span></p><p>Supports plain TestNG based tests&#160;with or without <a shape="rect" href="cdi.html">CDI</a>,&#160;<a shape="rect" href="spring.html">Spring</a>&#160;or&#160;<a shape="rect" href="guice.html">Guice</a>&#160;for&#160;<a shape="rect" href="dependency-injection.html">Dependency Injection</a>&#160;which does not require an in-depth knowledge of CDI, Spring + Spring Test or Guice. &#160;</p><p>From <strong>Camel 2.10</strong>: this component supports Spring Test&#160;based tests that use the declarative style of test configura
 tion and injection common in Spring Test and described in more detail under <a shape="rect" href="spring-testing.html">Spring Testing</a>.</p></td></tr></tbody></table></div><p>In all approaches the test classes look pretty much the same in that they all reuse the <a shape="rect" href="bean-integration.html">Camel binding and injection annotations</a>.</p><h4 id="BookInOnePage-CamelTestExample">Camel Test Example</h4><p>Here is the <a shape="rect" href="camel-test.html">Camel Test</a> <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/camel/trunk/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java">example</a>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 // tag::example[]
 public class FilterTest extends CamelTestSupport {
@@ -3251,7 +3251,7 @@ public class MyModule extends CamelModul
 ]]></script>
 </div></div><h3 id="BookInOnePage-SeeAlso.4">See Also</h3><ul><li><a shape="rect" href="mock.html">Mock</a> for details of mock endpoint testing (as opposed to template based stubs).</li></ul>
 <h2 id="BookInOnePage-Database">Database</h2><p>Camel can work with databases in a number of different ways. This document tries to outline the most common approaches.</p><h3 id="BookInOnePage-Databaseendpoints">Database endpoints</h3><p>Camel provides a number of different endpoints for working with databases</p><ul><li><a shape="rect" href="jpa.html">JPA</a> for working with hibernate, openjpa or toplink. When consuming from the endpoints entity beans are read (and deleted/updated to mark as processed) then when producing to the endpoints they are written to the database (via insert/update).</li><li><a shape="rect" href="ibatis.html">iBATIS</a> similar to the above but using <a shape="rect" class="external-link" href="http://ibatis.apache.org/">Apache iBATIS</a></li><li><a shape="rect" href="jdbc.html">JDBC</a> similar though using explicit SQL</li><li><a shape="rect" href="sql-component.html">SQL</a><span style="color: rgb(0,0,0);">&#160;uses<a shape="rect" class="external-link" 
 href="http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/jdbc.html" rel="nofollow"> spring-jdbc</a> behind&#160;</span>the scene for the actual SQL handling.&#160;The difference between this component and&#160;<a shape="rect" class="external-link" href="http://camel.apache.org/jdbc.html">JDBC</a>&#160;component is that in case of SQL the query is a property of the endpoint and it uses message payload as parameters passed to the query</li></ul><h3 id="BookInOnePage-Databasepatternimplementations">Database pattern implementations</h3><p>Various patterns can work with databases as follows</p><ul><li><a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a></li><li><a shape="rect" href="aggregator.html">Aggregator</a></li><li><a shape="rect" href="bam.html">BAM</a> for business activity monitoring</li></ul>
-<h2 id="BookInOnePage-ParallelProcessingandOrdering">Parallel Processing and Ordering</h2><p>It is a common requirement to want to use parallel processing of messages for throughput and load balancing, while at the same time process certain kinds of messages in order.</p><h3 id="BookInOnePage-Howtoachieveparallelprocessing">How to achieve parallel processing</h3><p>You can send messages to a number of Camel <a shape="rect" href="components.html">Components</a> to achieve parallel processing and load balancing such as</p><ul><li><a shape="rect" href="seda.html">SEDA</a> for in-JVM load balancing across a thread pool</li><li><a shape="rect" href="activemq.html">ActiveMQ</a> or <a shape="rect" href="jms.html">JMS</a> for distributed load balancing and parallel processing</li><li><a shape="rect" href="jpa.html">JPA</a> for using the database as a poor mans message broker</li></ul><p>When processing messages concurrently, you should consider ordering and concurrency issues. These are des
 cribed below</p><h4 id="BookInOnePage-Concurrencyissues">Concurrency issues</h4><p>Note that there is no concurrency or locking issue when using <a shape="rect" href="activemq.html">ActiveMQ</a>, <a shape="rect" href="jms.html">JMS</a> or <a shape="rect" href="seda.html">SEDA</a> by design; they are designed for highly concurrent use. However there are possible concurrency issues in the <a shape="rect" href="processor.html">Processor</a> of the messages i.e. what the processor does with the message?</p><p>For example if a processor of a message transfers money from one account to another account; you probably want to use a database with pessimistic locking to ensure that operation takes place atomically.</p><h4 id="BookInOnePage-Orderingissues">Ordering issues</h4><p>As soon as you send multiple messages to different threads or processes you will end up with an unknown ordering across the entire message stream as each thread is going to process messages concurrently.</p><p>For many 
 use cases the order of messages is not too important. However for some applications this can be crucial. e.g. if a customer submits a purchase order version 1, then amends it and sends version 2; you don't want to process the first version last (so that you loose the update). Your <a shape="rect" href="processor.html">Processor</a> might be clever enough to ignore old messages. If not you need to preserve order.</p><h3 id="BookInOnePage-Recommendations">Recommendations</h3><p>This topic is large and diverse with lots of different requirements; but from a high level here are our recommendations on parallel processing, ordering and concurrency</p><ul><li>for distributed locking, use a database by default, they are very good at it <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></li><li>to preserve ordering across a JMS queue
  consider using <a shape="rect" class="external-link" href="http://activemq.apache.org/exclusive-consumer.html">Exclusive Consumers</a> in the <a shape="rect" href="activemq.html">ActiveMQ</a> component</li><li>even better are <a shape="rect" class="external-link" href="http://activemq.apache.org/message-groups.html">Message Groups</a> which allows you to preserve ordering across messages while still offering parallelisation via the <strong>JMSXGroupID</strong> header to determine what can be parallelized</li><li>if you receive messages out of order you could use the <a shape="rect" href="resequencer.html">Resequencer</a> to put them back together again</li></ul><p>A good rule of thumb to help reduce ordering problems is to make sure each single can be processed as an atomic unit in parallel (either without concurrency issues or using say, database locking); or if it can't, use a <a shape="rect" class="external-link" href="http://activemq.apache.org/message-groups.html">Message Grou
 p</a> to relate the messages together which need to be processed in order by a single thread.</p><h3 id="BookInOnePage-UsingMessageGroupswithCamel">Using Message Groups with Camel</h3><p>To use a Message Group with Camel you just need to add a header to the output JMS message based on some kind of <a shape="rect" href="correlation-identifier.html">Correlation Identifier</a> to correlate messages which should be processed in order by a single thread - so that things which don't correlate together can be processed concurrently.</p><p>For example the following code shows how to create a message group using an XPath expression taking an invoice's product code as the <a shape="rect" href="correlation-identifier.html">Correlation Identifier</a></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h2 id="BookInOnePage-ParallelProcessingandOrdering">Parallel Processing and Ordering</h2><p>It is a common requirement to want to use parallel processing of messages for throughput and load balancing, while at the same time process certain kinds of messages in order.</p><h3 id="BookInOnePage-Howtoachieveparallelprocessing">How to achieve parallel processing</h3><p>You can send messages to a number of Camel <a shape="rect" href="components.html">Components</a> to achieve parallel processing and load balancing such as</p><ul><li><a shape="rect" href="seda.html">SEDA</a> for in-JVM load balancing across a thread pool</li><li><a shape="rect" href="activemq.html">ActiveMQ</a> or <a shape="rect" href="jms.html">JMS</a> for distributed load balancing and parallel processing</li><li><a shape="rect" href="jpa.html">JPA</a> for using the database as a poor mans message broker</li></ul><p>When processing messages concurrently, you should consider ordering and concurrency issues. These are des
 cribed below</p><h4 id="BookInOnePage-Concurrencyissues">Concurrency issues</h4><p>Note that there is no concurrency or locking issue when using <a shape="rect" href="activemq.html">ActiveMQ</a>, <a shape="rect" href="jms.html">JMS</a> or <a shape="rect" href="seda.html">SEDA</a> by design; they are designed for highly concurrent use. However there are possible concurrency issues in the <a shape="rect" href="processor.html">Processor</a> of the messages i.e. what the processor does with the message?</p><p>For example if a processor of a message transfers money from one account to another account; you probably want to use a database with pessimistic locking to ensure that operation takes place atomically.</p><h4 id="BookInOnePage-Orderingissues">Ordering issues</h4><p>As soon as you send multiple messages to different threads or processes you will end up with an unknown ordering across the entire message stream as each thread is going to process messages concurrently.</p><p>For many 
 use cases the order of messages is not too important. However for some applications this can be crucial. e.g. if a customer submits a purchase order version 1, then amends it and sends version 2; you don't want to process the first version last (so that you loose the update). Your <a shape="rect" href="processor.html">Processor</a> might be clever enough to ignore old messages. If not you need to preserve order.</p><h3 id="BookInOnePage-Recommendations">Recommendations</h3><p>This topic is large and diverse with lots of different requirements; but from a high level here are our recommendations on parallel processing, ordering and concurrency</p><ul><li>for distributed locking, use a database by default, they are very good at it <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></li><li>to preserve ordering across a JMS queue
  consider using <a shape="rect" class="external-link" href="http://activemq.apache.org/exclusive-consumer.html">Exclusive Consumers</a> in the <a shape="rect" href="activemq.html">ActiveMQ</a> component</li><li>even better are <a shape="rect" class="external-link" href="http://activemq.apache.org/message-groups.html">Message Groups</a> which allows you to preserve ordering across messages while still offering parallelisation via the <strong>JMSXGroupID</strong> header to determine what can be parallelized</li><li>if you receive messages out of order you could use the <a shape="rect" href="resequencer.html">Resequencer</a> to put them back together again</li></ul><p>A good rule of thumb to help reduce ordering problems is to make sure each single can be processed as an atomic unit in parallel (either without concurrency issues or using say, database locking); or if it can't, use a <a shape="rect" class="external-link" href="http://activemq.apache.org/message-groups.html">Message Grou
 p</a> to relate the messages together which need to be processed in order by a single thread.</p><h3 id="BookInOnePage-UsingMessageGroupswithCamel">Using Message Groups with Camel</h3><p>To use a Message Group with Camel you just need to add a header to the output JMS message based on some kind of <a shape="rect" href="correlation-identifier.html">Correlation Identifier</a> to correlate messages which should be processed in order by a single thread - so that things which don't correlate together can be processed concurrently.</p><p>For example the following code shows how to create a message group using an XPath expression taking an invoice's product code as the <a shape="rect" href="correlation-identifier.html">Correlation Identifier</a></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:a&quot;).setHeader(JmsConstants.JMS_X_GROUP_ID, xpath(&quot;/invoice/productCode&quot;)).to(&quot;activemq:b&quot;);
 ]]></script>
 </div></div><p>You can of course use the <a shape="rect" href="xml-configuration.html">Xml Configuration</a> if you prefer</p>
@@ -3297,7 +3297,7 @@ asyncProcessor.process(exchange, new Asy
 
 <p>Most folks want Queue semantics when consuming messages; so that you can support <a shape="rect" href="competing-consumers.html">Competing Consumers</a> for load balancing along with things like <a shape="rect" class="external-link" href="http://activemq.apache.org/message-groups.html">Message Groups</a> and <a shape="rect" class="external-link" href="http://activemq.apache.org/exclusive-consumer.html">Exclusive Consumers</a> to preserve ordering or partition the queue across consumers.</p>
 
-<p>However if you are using another JMS provider you can implement Virtual Topics by switching to ActiveMQ <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"> or you can use the following Camel pattern.</p>
+<p>However if you are using another JMS provider you can implement Virtual Topics by switching to ActiveMQ <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"> or you can use the following Camel pattern.</p>
 
 <p>First here's the ActiveMQ approach.</p>
 
@@ -3545,11 +3545,11 @@ The tutorial has been designed in two pa
 While not actual tutorials you might find working through the source of the various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
 
 <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</h2><p>&#160;</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Thanks</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This tutorial was kindly donated to Apache Camel by Martin Gilday.</p></div></div><h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the reader through the stages of creating a project which uses Camel to facilitate the routing of messages from a JMS queue to a <a shape="rect" class="external-link" href="http://www.springramework.org" rel="nofollow">Spring</a> service. The route works in a synchronous fashion returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1497039557661 {padding: 0px;}
-div.rbtoc1497039557661 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1497039557661 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1497151465015 {padding: 0px;}
+div.rbtoc1497151465015 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1497151465015 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1497039557661">
+/*]]>*/</style></p><div class="toc-macro rbtoc1497151465015">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-About">About</a></li><li><a shape="rect" href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the Server</a>
@@ -3825,14 +3825,14 @@ public static void main(final String[] a
 DefaultInstrumentationAgent    INFO  JMX connector thread started on service:jmx:rmi:///jndi/rmi://claus-acer:1099/jmxrmi/camel
 ...
 ]]></script>
-</div></div><p>In the screenshot below we can see the route and its performance metrics:<br clear="none"> <span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="book-in-one-page.data/jconsole_jms_tutorial.PNG" data-image-src="/confluence/download/attachments/82923/jconsole_jms_tutorial.PNG?version=1&amp;modificationDate=1214345078000&amp;api=v2" data-unresolved-comment-count="0" data-linked-resource-id="59672517" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="jconsole_jms_tutorial.PNG" data-base-url="https://cwiki.apache.org/confluence" data-linked-resource-content-type="image/png" data-linked-resource-container-id="82923" data-linked-resource-container-version="40"></span></p><h2 id="BookInOnePage-SeeAlso.5">See Also</h2><ul><li><a shape="rect" class="external-link" href="http://aminsblog.wordpress.com/2008/05/06/15/" rel="nofollow">Spring Remoting with JMS Example</a> on <a shape="rect
 " class="external-link" href="http://aminsblog.wordpress.com/" rel="nofollow">Amin Abbaspour's Weblog</a></li></ul>
+</div></div><p>In the screenshot below we can see the route and its performance metrics:<br clear="none"> <span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" src="book-in-one-page.data/jconsole_jms_tutorial.PNG" data-image-src="/confluence/download/attachments/82923/jconsole_jms_tutorial.PNG?version=1&amp;modificationDate=1214345078000&amp;api=v2" data-unresolved-comment-count="0" data-linked-resource-id="59672517" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="jconsole_jms_tutorial.PNG" data-base-url="https://cwiki.apache.org/confluence" data-linked-resource-content-type="image/png" data-linked-resource-container-id="82923" data-linked-resource-container-version="41"></span></p><h2 id="BookInOnePage-SeeAlso.5">See Also</h2><ul><li><a shape="rect" class="external-link" href="http://aminsblog.wordpress.com/2008/05/06/15/" rel="nofollow">Spring Remoting with JMS Example</a> on <a shape="rect
 " class="external-link" href="http://aminsblog.wordpress.com/" rel="nofollow">Amin Abbaspour's Weblog</a></li></ul>
 
 <h2 id="BookInOnePage-Tutorial-camel-example-reportincident">Tutorial - camel-example-reportincident</h2>
 
 
 <h2 id="BookInOnePage-Introduction.3">Introduction</h2>
 
-<p>Creating this tutorial was inspired by a real life use-case I discussed over the phone with a colleague. He was working at a client whom uses a heavy-weight integration platform from a very large vendor. He was in talks with developer shops to implement a new integration on this platform. His trouble was the shop tripled the price when they realized the platform of choice. So I was wondering how we could do this integration with Camel. Can it be done, without tripling the cost <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">.</p>
+<p>Creating this tutorial was inspired by a real life use-case I discussed over the phone with a colleague. He was working at a client whom uses a heavy-weight integration platform from a very large vendor. He was in talks with developer shops to implement a new integration on this platform. His trouble was the shop tripled the price when they realized the platform of choice. So I was wondering how we could do this integration with Camel. Can it be done, without tripling the cost <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">.</p>
 
 <p>This tutorial is written during the development of the integration. I have decided to start off with a sample that isn't Camel's but standard Java and then plugin Camel as we goes. Just as when people needed to learn Spring you could consume it piece by piece, the same goes with Camel.</p>
 
@@ -4507,7 +4507,7 @@ INFO: Exchange[BodyType:String, Body:Cla
 </div></div>
 
 <h2 id="BookInOnePage-Writetofile-easywiththesamecodestyle">Write to file - easy with the same code style</h2>
-<p>Okay that isn't to impressive, Camel can log <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"> Well I promised that the above code style can be used for <strong>any</strong> component, so let's store the payload in a file. We do this by adding the file component to the Camel context</p>
+<p>Okay that isn't to impressive, Camel can log <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"> Well I promised that the above code style can be used for <strong>any</strong> component, so let's store the payload in a file. We do this by adding the file component to the Camel context</p>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
         // add the file component
@@ -5159,7 +5159,7 @@ public class ReportIncidentConsumerTest
 <blockquote>
 <p>you must unlearn what you have learned<br clear="none">
 <em>Master Yoda, Star Wars IV</em></p></blockquote>
-<p>So we start all over again! <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"></p></div></div>
+<p>So we start all over again! <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"></p></div></div>
 
 <h2 id="BookInOnePage-Routing">Routing</h2>
 <p>Camel is particular strong as a light-weight and agile <strong>routing</strong> and <strong>mediation</strong> framework. In this part we will introduce the <strong>routing</strong> concept and how we can introduce this into our solution.<br clear="none">
@@ -5664,11 +5664,11 @@ So we completed the last piece in the pi
 <p>This example has been removed from <strong>Camel 2.9</strong> onwards. Apache Axis 1.4 is a very old and unsupported framework. We encourage users to use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1497039558409 {padding: 0px;}
-div.rbtoc1497039558409 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1497039558409 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1497151465161 {padding: 0px;}
+div.rbtoc1497151465161 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1497151465161 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1497039558409">
+/*]]>*/</style><div class="toc-macro rbtoc1497151465161">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#BookInOnePage-RunningtheExample">Running the Example</a></li></ul>
@@ -8156,7 +8156,7 @@ simple(&quot;${in.header.type} == ${bean
    &lt;/filter&gt;
 &lt;/from&gt;
 ]]></script>
-</div></div><p>The Simple language can be used for the predicate test above in the <a shape="rect" href="message-filter.html">Message Filter</a> pattern, where we test if the in message has a <strong><code>foo</code></strong> header (a header with the key <strong><code>foo</code></strong> exists). If the expression evaluates to&#160;<strong><code>true</code></strong> then the message is routed to the <strong><code>mock:fooOrders</code></strong> endpoint, otherwise it is lost in the deep blue sea <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">.</p><p>The same example in Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The Simple language can be used for the predicate test above in the <a shape="rect" href="message-filter.html">Message Filter</a> pattern, where we test if the in message has a <strong><code>foo</code></strong> header (a header with the key <strong><code>foo</code></strong> exists). If the expression evaluates to&#160;<strong><code>true</code></strong> then the message is routed to the <strong><code>mock:fooOrders</code></strong> endpoint, otherwise it is lost in the deep blue sea <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">.</p><p>The same example in Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;seda:orders&quot;)
   .filter().simple(&quot;${in.header.foo}&quot;)
   .to(&quot;seda:fooOrders&quot;);
@@ -9581,7 +9581,7 @@ The Zip <a shape="rect" href="data-forma
 <div class="confluence-information-macro confluence-information-macro-tip"><p class="title">Camel eats our own -dog food- soap</p><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body">
 <p>We had some issues in our pdf <a shape="rect" href="manual.html">Manual</a> where we had some strange symbols. So <a shape="rect" class="external-link" href="http://janstey.blogspot.com/" rel="nofollow">Jonathan</a> used this data format to tidy up the wiki html pages that are used as base for rendering the pdf manuals. And then the mysterious symbols vanished.</p></div></div> 
 
-<p><a shape="rect" href="tidymarkup.html">TidyMarkup</a> only supports the <strong>unmarshal</strong> operation as we really don't want to turn well formed HTML into ugly HTML <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
+<p><a shape="rect" href="tidymarkup.html">TidyMarkup</a> only supports the <strong>unmarshal</strong> operation as we really don't want to turn well formed HTML into ugly HTML <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
 
 <h3 id="BookInOnePage-JavaDSLExample">Java DSL Example</h3>
 <p>An example where the consumer provides some HTML</p>
@@ -15233,7 +15233,7 @@ from(&quot;jms:MyQueue?concurrentConsume
 ]]></script>
 </div></div>
 
-<p>Or just run multiple JVMs of any <a shape="rect" href="activemq.html">ActiveMQ</a> or <a shape="rect" href="jms.html">JMS</a> route <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
+<p>Or just run multiple JVMs of any <a shape="rect" href="activemq.html">ActiveMQ</a> or <a shape="rect" href="jms.html">JMS</a> route <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
 
 <h4 id="BookInOnePage-UsingThisPattern.38">Using This Pattern</h4>
 
@@ -16066,7 +16066,7 @@ droppable = false}
 &lt;/dependency&gt;
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.20">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <div class="error"><span class="error">Unable to render {include}</span> The included page could not be found.</div> <h2 id="BookInOnePage-AMQP">AMQP</h2><p>The <strong style="line-height: 1.42857;">amqp:</strong> component supports the <a shape="rect" class="external-link" href="http://www.amqp.org/" style="line-height: 1.42857;" rel="nofollow">AMQP 1.0 protocol</a> using the JMS Client API of the <a shape="rect" class="external-link" href="https://github.com/apache/qpid-jms/" rel="nofollow">Qpid</a> project. In case you want to use <strong>AMQP 0.9</strong> (in particular RabbitMQ) you might also be interested in the <a shape="rect" href="rabbitmq.html">Camel RabbitMQ</a> component. Please keep in mind that pr
 ior to the <strong>Camel 2.17.0</strong> AMQP component supported <strong>AMQP 0.9</strong> and above, however since <strong>Camel 2.17.0</strong> it supports only <strong>AMQP 1.0</strong>.</p><p>Maven users will need to add the following dependency to their <strong><code>pom.xml</code></strong> for this component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <div class="error"><span class="error">Unable to render {include}</span> The included page could not be found.</div> <h2 id="BookInOnePage-AMQP">AMQP</h2><p>The <strong style="line-height: 1.42857;">amqp:</strong> component supports the <a shape="rect" class="external-link" href="http://www.amqp.org/" rel="nofollow" style="line-height: 1.42857;">AMQP 1.0 protocol</a> using the JMS Client API of the <a shape="rect" class="external-link" href="https://github.com/apache/qpid-jms/" rel="nofollow">Qpid</a> project. In case you want to use <strong>AMQP 0.9</strong> (in particular RabbitMQ) you might also be interested in the <a shape="rect" href="rabbitmq.html">Camel RabbitMQ</a> component. Please keep in mind that pr
 ior to the <strong>Camel 2.17.0</strong> AMQP component supported <strong>AMQP 0.9</strong> and above, however since <strong>Camel 2.17.0</strong> it supports only <strong>AMQP 1.0</strong>.</p><p>Maven users will need to add the following dependency to their <strong><code>pom.xml</code></strong> for this component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-amqp&lt;/artifactId&gt;
@@ -16869,11 +16869,11 @@ template.send(&quot;direct:alias-verify&
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.28">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a shape="rect" href="data-format.html">Data Format</a></li></ul> <h2 id="BookInOnePage-CXFComponent">CXF Component</h2><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF as a consumer, the <a shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows you to factor out how message payloads are received from their processing as a RESTful or SOAP web service. This has the potential of using a multitude of transports to consume web 
 services. The bean component's configuration is also simpler and provides the fastest method to implement web services using Camel and CXF.</p></div></div><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p></div></div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1497039565471 {padding: 0px;}
-div.rbtoc1497039565471 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1497039565471 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1497151466417 {padding: 0px;}
+div.rbtoc1497151466417 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1497151466417 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1497039565471">
+/*]]>*/</style></p><div class="toc-macro rbtoc1497151466417">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect" href="#BookInOnePage-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the dataformats</a>
@@ -17526,7 +17526,7 @@ public static class MyProcessor implemen
 </div></div><p>Where <strong>rsEndpoint</strong> represents the spring bean's name which presents the CXFRS client or server</p><p>For either style above, you can append options to the URI as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[cxfrs:bean:cxfEndpoint?resourceClasses=org.apache.camel.rs.Example
 ]]></script>

[... 42 lines stripped ...]
Modified: websites/production/camel/content/book-languages-appendix.html
==============================================================================
--- websites/production/camel/content/book-languages-appendix.html (original)
+++ websites/production/camel/content/book-languages-appendix.html Sun Jun 11 03:29:17 2017
@@ -1037,7 +1037,7 @@ simple(&quot;${in.header.type} == ${bean
    &lt;/filter&gt;
 &lt;/from&gt;
 ]]></script>
-</div></div><p>The Simple language can be used for the predicate test above in the <a shape="rect" href="message-filter.html">Message Filter</a> pattern, where we test if the in message has a <strong><code>foo</code></strong> header (a header with the key <strong><code>foo</code></strong> exists). If the expression evaluates to&#160;<strong><code>true</code></strong> then the message is routed to the <strong><code>mock:fooOrders</code></strong> endpoint, otherwise it is lost in the deep blue sea <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">.</p><p>The same example in Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The Simple language can be used for the predicate test above in the <a shape="rect" href="message-filter.html">Message Filter</a> pattern, where we test if the in message has a <strong><code>foo</code></strong> header (a header with the key <strong><code>foo</code></strong> exists). If the expression evaluates to&#160;<strong><code>true</code></strong> then the message is routed to the <strong><code>mock:fooOrders</code></strong> endpoint, otherwise it is lost in the deep blue sea <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">.</p><p>The same example in Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;seda:orders&quot;)
   .filter().simple(&quot;${in.header.foo}&quot;)
   .to(&quot;seda:fooOrders&quot;);

Modified: websites/production/camel/content/book-pattern-appendix.html
==============================================================================
--- websites/production/camel/content/book-pattern-appendix.html (original)
+++ websites/production/camel/content/book-pattern-appendix.html Sun Jun 11 03:29:17 2017
@@ -3991,7 +3991,7 @@ from(&quot;jms:MyQueue?concurrentConsume
 ]]></script>
 </div></div>
 
-<p>Or just run multiple JVMs of any <a shape="rect" href="activemq.html">ActiveMQ</a> or <a shape="rect" href="jms.html">JMS</a> route <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
+<p>Or just run multiple JVMs of any <a shape="rect" href="activemq.html">ActiveMQ</a> or <a shape="rect" href="jms.html">JMS</a> route <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png" data-emoticon-name="smile" alt="(smile)"></p>
 
 <h4 id="BookPatternAppendix-UsingThisPattern.38">Using This Pattern</h4>
 

Modified: websites/production/camel/content/book-quickstart.html
==============================================================================
--- websites/production/camel/content/book-quickstart.html (original)
+++ websites/production/camel/content/book-quickstart.html Sun Jun 11 03:29:17 2017
@@ -126,7 +126,7 @@ for (int i = 0; i &lt; 10; i++) {
 <h2 id="BookQuickstart-Walkthroughanotherexample">Walk through another example</h2>
 
 <h3 id="BookQuickstart-Introduction">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/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"></p>
+<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/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)"></p>
 
 <p>First we take a moment to look at the <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a> - the base pattern catalog for integration scenarios. In particular we focus on <a shape="rect" href="pipes-and-filters.html">Pipes and filters</a> - a central pattern. This is used to route messages through a sequence of processing steps, each performing a specific function - much like the Java Servlet Filters. </p>
 
@@ -232,7 +232,7 @@ for (int i = 0; i &lt; 10; i++) {
 2. the output from validateOrder bean is sent as text to the mainframe using TCP<br clear="none">
 3. the output from mainframe is sent back as input to the sendConfirmEmai bean</p>
 
-<p>What to notice here is that the <code>to</code> is not the end of the route (the world <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">) in this example it's used in the middle of the <a shape="rect" href="pipes-and-filters.html">Pipes and filters</a>. In fact we can change the <code>bean</code> types to <code>to</code> as well:</p>
+<p>What to notice here is that the <code>to</code> is not the end of the route (the world <img class="emoticon emoticon-wink" src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/wink.png" data-emoticon-name="wink" alt="(wink)">) in this example it's used in the middle of the <a shape="rect" href="pipes-and-filters.html">Pipes and filters</a>. In fact we can change the <code>bean</code> types to <code>to</code> as well:</p>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;