camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r951255 - in /websites/production/camel/content: book-in-one-page.html book-pattern-appendix.html cache/main.pageCache camel-2160-release.html idempotent-consumer.html
Date Thu, 14 May 2015 12:19:37 GMT
Author: buildbot
Date: Thu May 14 12:19:36 2015
New Revision: 951255

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/book-in-one-page.html
    websites/production/camel/content/book-pattern-appendix.html
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/camel-2160-release.html
    websites/production/camel/content/idempotent-consumer.html

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 May 14 12:19:36 2015
@@ -4040,11 +4040,11 @@ While not actual tutorials you might fin
                     </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.rbtoc1431512374136 {padding: 0px;}
-div.rbtoc1431512374136 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1431512374136 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1431605905718 {padding: 0px;}
+div.rbtoc1431605905718 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1431605905718 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1431512374136">
+/*]]>*/</style></p><div class="toc-macro rbtoc1431605905718">
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Preface">Preface</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Distribution">Distribution</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-About">About</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#Tutorial-JmsRemoting-WritingtheServer">Writing the Server</a>
@@ -6230,11 +6230,11 @@ So we completed the last piece in the pi
 
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1431512374395 {padding: 0px;}
-div.rbtoc1431512374395 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1431512374395 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1431605906042 {padding: 0px;}
+div.rbtoc1431605906042 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1431605906042 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1431512374395">
+/*]]>*/</style><div class="toc-macro rbtoc1431605906042">
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-Distribution">Distribution</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-Introduction">Introduction</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Maven2">Maven 2</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-wsdl">wsdl</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-RunningtheExample">Running the Example</a></li></ul>
@@ -16997,7 +16997,7 @@ from(&quot;activemq:queue:Consumer.2.Vir
 <h4 id="BookInOnePage-UsingThisPattern.41">Using This Pattern</h4>
 
 <p>If you would like to use this EIP Pattern then please read the <a shape="rect" href="getting-started.html">Getting Started</a>, you may also find the <a shape="rect" href="architecture.html">Architecture</a> useful particularly the description of <a shape="rect" href="endpoint.html">Endpoint</a> and <a shape="rect" href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect" href="examples.html">Examples</a> first before trying this pattern out.</p>
-<h3 id="BookInOnePage-IdempotentConsumer">Idempotent Consumer</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html" rel="nofollow">Idempotent Consumer</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> is used to filter out duplicate messages.</p><p>This pattern is implemented using the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/IdempotentConsumer.html">IdempotentConsumer</a> class. This uses an <a shape="rect" href="expression.html">Expression</a> to calculate a unique message ID string for a given message exchange; this ID can then be looked up in the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">IdempotentRepository</a> to see if it has been seen before; if it has the message 
 is consumed; if its not then the message is processed and the ID is added to the repository.</p><p>The Idempotent Consumer essentially acts like a <a shape="rect" href="message-filter.html">Message Filter</a> to filter out duplicates.</p><p>Camel will add the message id eagerly to the repository to detect duplication also for Exchanges currently in progress.<br clear="none"> On completion Camel will remove the message id from the repository if the Exchange failed, otherwise it stays there.</p><p>Camel provides the following Idempotent Consumer implementations:</p><ul class="alternate"><li>MemoryIdempotentRepository</li><li><a shape="rect" href="file2.html">FileIdempotentRepository</a></li><li><a shape="rect" href="hazelcast-component.html">HazelcastIdempotentRepository</a> (<strong>Available as of Camel 2.8</strong>)</li><li><a shape="rect" href="sql-component.html">JdbcMessageIdRepository</a> (<strong>Available as of Camel 2.7</strong>)</li><li><a shape="rect" href="jpa.html">JpaMe
 ssageIdRepository</a></li><li><p><a shape="rect" href="infinispan.html">InfinispanIdempotentRepository</a> (<strong>Available as of Camel 2.13.0)</strong></p></li></ul><h3 id="BookInOnePage-Options.19">Options</h3><p>The Idempotent Consumer has the following options:</p><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>eager</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Eager controls whether Camel adds the message to the repository before or after the exchange has been processed. If enabled before then Camel will be able to detect duplicate messages even when messages are currently in progress. By disabling Camel will only de
 tect duplicates when a message has successfully been processed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageIdRepositoryRef</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to a <code>IdempotentRepository</code> to lookup in the registry. This option is mandatory when using XML DSL.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipDuplicate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Sets whether to skip duplicate messages. If set to <code>false</code> then the message will be continued. However the <a shape="rect" href="exchange.html">Exchange</a> has been marked as a duplicate by having the <code>Exchange.DUPLICATE_MESSAG</code> exchange property set to a <code>Boolean.TRUE</code> value.</p></td></tr><tr><td colspan="1"
  rowspan="1" class="confluenceTd"><p>removeOnFailure</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Sets whether to remove the id of an Exchange that failed.</p></td></tr></tbody></table></div><h3 id="BookInOnePage-Usingthe"><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></h3><p>The following example will use the header <strong>myMessageId</strong> to filter out duplicates</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h3 id="BookInOnePage-IdempotentConsumer">Idempotent Consumer</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html" rel="nofollow">Idempotent Consumer</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> is used to filter out duplicate messages.</p><p>This pattern is implemented using the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/IdempotentConsumer.html">IdempotentConsumer</a> class. This uses an <a shape="rect" href="expression.html">Expression</a> to calculate a unique message ID string for a given message exchange; this ID can then be looked up in the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">IdempotentRepository</a> to see if it has been seen before; if it has the message 
 is consumed; if its not then the message is processed and the ID is added to the repository.</p><p>The Idempotent Consumer essentially acts like a <a shape="rect" href="message-filter.html">Message Filter</a> to filter out duplicates.</p><p>Camel will add the message id eagerly to the repository to detect duplication also for Exchanges currently in progress.<br clear="none"> On completion Camel will remove the message id from the repository if the Exchange failed, otherwise it stays there.</p><p>Camel provides the following Idempotent Consumer implementations:</p><ul class="alternate"><li>MemoryIdempotentRepository</li><li><a shape="rect" href="file2.html">FileIdempotentRepository</a></li><li><a shape="rect" href="hazelcast-component.html">HazelcastIdempotentRepository</a> (<strong>Available as of Camel 2.8</strong>)</li><li><a shape="rect" href="sql-component.html">JdbcMessageIdRepository</a> (<strong>Available as of Camel 2.7</strong>)</li><li><a shape="rect" href="jpa.html">JpaMe
 ssageIdRepository</a></li><li><p><a shape="rect" href="infinispan.html">InfinispanIdempotentRepository</a> (<strong>Available as of Camel 2.13.0)</strong></p></li></ul><h3 id="BookInOnePage-Options.19">Options</h3><p>The Idempotent Consumer has the following options:</p><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>eager</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Eager controls whether Camel adds the message to the repository before or after the exchange has been processed. If enabled before then Camel will be able to detect duplicate messages even when messages are currently in progress. By disabling Camel will only de
 tect duplicates when a message has successfully been processed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageIdRepositoryRef</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to a <code>IdempotentRepository</code> to lookup in the registry. This option is mandatory when using XML DSL.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipDuplicate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Sets whether to skip duplicate messages. If set to <code>false</code> then the message will be continued. However the <a shape="rect" href="exchange.html">Exchange</a> has been marked as a duplicate by having the <code>Exchange.DUPLICATE_MESSAG</code> exchange property set to a <code>Boolean.TRUE</code> value.</p></td></tr><tr><td colspan="1"
  rowspan="1" class="confluenceTd"><p>removeOnFailure</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Sets whether to remove the id of an Exchange that failed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">scope</td><td colspan="1" rowspan="1" class="confluenceTd">OnCompletion</td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> Sets the scope of this idempotent consumer where its boundaries ends.</p><p>The default mode is OnCompletion which means the idempotent consumer will only trigger its completion at the end of the routing of the exchange, when the exchange completes. So if the exchange is continued routed after the block ends, then whatever happens there also affect the state. For example if the exchange failed due to an exception, then the state of the idempotent consumer will be a rollback.</p><p>The other mode BlockOnly
  means that the idempotent consumer will trigger its completion when the exchange reached the end of the block of the idempotent consumer pattern. So if the exchange is continued routed after the block ends, then whatever happens there does not affect the state.</p></td></tr></tbody></table></div><h3 id="BookInOnePage-Usingthe"><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></h3><p>The following example will use the header <strong>myMessageId</strong> to filter out duplicates</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
     public void configure() {
@@ -18817,11 +18817,11 @@ template.send(&quot;direct:alias-verify&
                     </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.rbtoc1431512392630 {padding: 0px;}
-div.rbtoc1431512392630 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1431512392630 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1431605917492 {padding: 0px;}
+div.rbtoc1431605917492 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1431605917492 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1431512392630">
+/*]]>*/</style></p><div class="toc-macro rbtoc1431605917492">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-Thedescriptionsofthedataformats">The descriptions of the dataformats</a>

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 Thu May 14 12:19:36 2015
@@ -4431,7 +4431,7 @@ from(&quot;activemq:queue:Consumer.2.Vir
 <h4 id="BookPatternAppendix-UsingThisPattern.41">Using This Pattern</h4>
 
 <p>If you would like to use this EIP Pattern then please read the <a shape="rect" href="getting-started.html">Getting Started</a>, you may also find the <a shape="rect" href="architecture.html">Architecture</a> useful particularly the description of <a shape="rect" href="endpoint.html">Endpoint</a> and <a shape="rect" href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect" href="examples.html">Examples</a> first before trying this pattern out.</p>
-<h3 id="BookPatternAppendix-IdempotentConsumer">Idempotent Consumer</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html" rel="nofollow">Idempotent Consumer</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> is used to filter out duplicate messages.</p><p>This pattern is implemented using the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/IdempotentConsumer.html">IdempotentConsumer</a> class. This uses an <a shape="rect" href="expression.html">Expression</a> to calculate a unique message ID string for a given message exchange; this ID can then be looked up in the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">IdempotentRepository</a> to see if it has been seen before; if it has the me
 ssage is consumed; if its not then the message is processed and the ID is added to the repository.</p><p>The Idempotent Consumer essentially acts like a <a shape="rect" href="message-filter.html">Message Filter</a> to filter out duplicates.</p><p>Camel will add the message id eagerly to the repository to detect duplication also for Exchanges currently in progress.<br clear="none"> On completion Camel will remove the message id from the repository if the Exchange failed, otherwise it stays there.</p><p>Camel provides the following Idempotent Consumer implementations:</p><ul class="alternate"><li>MemoryIdempotentRepository</li><li><a shape="rect" href="file2.html">FileIdempotentRepository</a></li><li><a shape="rect" href="hazelcast-component.html">HazelcastIdempotentRepository</a> (<strong>Available as of Camel 2.8</strong>)</li><li><a shape="rect" href="sql-component.html">JdbcMessageIdRepository</a> (<strong>Available as of Camel 2.7</strong>)</li><li><a shape="rect" href="jpa.html"
 >JpaMessageIdRepository</a></li><li><p><a shape="rect" href="infinispan.html">InfinispanIdempotentRepository</a> (<strong>Available as of Camel 2.13.0)</strong></p></li></ul><h3 id="BookPatternAppendix-Options.10">Options</h3><p>The Idempotent Consumer has the following options:</p><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>eager</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Eager controls whether Camel adds the message to the repository before or after the exchange has been processed. If enabled before then Camel will be able to detect duplicate messages even when messages are currently in progress. By disabling Camel 
 will only detect duplicates when a message has successfully been processed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageIdRepositoryRef</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to a <code>IdempotentRepository</code> to lookup in the registry. This option is mandatory when using XML DSL.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipDuplicate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Sets whether to skip duplicate messages. If set to <code>false</code> then the message will be continued. However the <a shape="rect" href="exchange.html">Exchange</a> has been marked as a duplicate by having the <code>Exchange.DUPLICATE_MESSAG</code> exchange property set to a <code>Boolean.TRUE</code> value.</p></td></tr><tr><td
  colspan="1" rowspan="1" class="confluenceTd"><p>removeOnFailure</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Sets whether to remove the id of an Exchange that failed.</p></td></tr></tbody></table></div><h3 id="BookPatternAppendix-Usingthe"><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></h3><p>The following example will use the header <strong>myMessageId</strong> to filter out duplicates</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h3 id="BookPatternAppendix-IdempotentConsumer">Idempotent Consumer</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html" rel="nofollow">Idempotent Consumer</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> is used to filter out duplicate messages.</p><p>This pattern is implemented using the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/IdempotentConsumer.html">IdempotentConsumer</a> class. This uses an <a shape="rect" href="expression.html">Expression</a> to calculate a unique message ID string for a given message exchange; this ID can then be looked up in the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">IdempotentRepository</a> to see if it has been seen before; if it has the me
 ssage is consumed; if its not then the message is processed and the ID is added to the repository.</p><p>The Idempotent Consumer essentially acts like a <a shape="rect" href="message-filter.html">Message Filter</a> to filter out duplicates.</p><p>Camel will add the message id eagerly to the repository to detect duplication also for Exchanges currently in progress.<br clear="none"> On completion Camel will remove the message id from the repository if the Exchange failed, otherwise it stays there.</p><p>Camel provides the following Idempotent Consumer implementations:</p><ul class="alternate"><li>MemoryIdempotentRepository</li><li><a shape="rect" href="file2.html">FileIdempotentRepository</a></li><li><a shape="rect" href="hazelcast-component.html">HazelcastIdempotentRepository</a> (<strong>Available as of Camel 2.8</strong>)</li><li><a shape="rect" href="sql-component.html">JdbcMessageIdRepository</a> (<strong>Available as of Camel 2.7</strong>)</li><li><a shape="rect" href="jpa.html"
 >JpaMessageIdRepository</a></li><li><p><a shape="rect" href="infinispan.html">InfinispanIdempotentRepository</a> (<strong>Available as of Camel 2.13.0)</strong></p></li></ul><h3 id="BookPatternAppendix-Options.10">Options</h3><p>The Idempotent Consumer has the following options:</p><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>eager</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Eager controls whether Camel adds the message to the repository before or after the exchange has been processed. If enabled before then Camel will be able to detect duplicate messages even when messages are currently in progress. By disabling Camel 
 will only detect duplicates when a message has successfully been processed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageIdRepositoryRef</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to a <code>IdempotentRepository</code> to lookup in the registry. This option is mandatory when using XML DSL.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipDuplicate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Sets whether to skip duplicate messages. If set to <code>false</code> then the message will be continued. However the <a shape="rect" href="exchange.html">Exchange</a> has been marked as a duplicate by having the <code>Exchange.DUPLICATE_MESSAG</code> exchange property set to a <code>Boolean.TRUE</code> value.</p></td></tr><tr><td
  colspan="1" rowspan="1" class="confluenceTd"><p>removeOnFailure</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Sets whether to remove the id of an Exchange that failed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">scope</td><td colspan="1" rowspan="1" class="confluenceTd">OnCompletion</td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> Sets the scope of this idempotent consumer where its boundaries ends.</p><p>The default mode is OnCompletion which means the idempotent consumer will only trigger its completion at the end of the routing of the exchange, when the exchange completes. So if the exchange is continued routed after the block ends, then whatever happens there also affect the state. For example if the exchange failed due to an exception, then the state of the idempotent consumer will be a rollback.</p><p>The other mo
 de BlockOnly means that the idempotent consumer will trigger its completion when the exchange reached the end of the block of the idempotent consumer pattern. So if the exchange is continued routed after the block ends, then whatever happens there does not affect the state.</p></td></tr></tbody></table></div><h3 id="BookPatternAppendix-Usingthe"><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></h3><p>The following example will use the header <strong>myMessageId</strong> to filter out duplicates</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
     public void configure() {

Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/camel/content/camel-2160-release.html
==============================================================================
--- websites/production/camel/content/camel-2160-release.html (original)
+++ websites/production/camel/content/camel-2160-release.html Thu May 14 12:19:36 2015
@@ -84,7 +84,7 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1 id="Camel2.16.0Release-Camel2.16.0release(currentlyinprogress)">Camel 2.16.0&#160;release (currently in progress)</h1><div style="padding-right:20px;float:left;margin-left:-20px;"><p><img class="confluence-embedded-image confluence-external-resource" src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png" data-image-src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"></p></div><div style="min-height:200px">&#160;</div><h2 id="Camel2.16.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.16.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><p>Noteworthy improvements:</p><ul><li>The route models (definition classes) preserve property placeholders, which allows round trip editing, and also prevents showing potential sensitive information</li><li>Added onPrepareFailure option to&#160;<a shape="rect" href="dead-letter-channel.html">Dead Letter Ch
 annel</a> to allow a custom processor to prepare the Exchange before sending to the dead letter queue.</li><li><a shape="rect" href="mongodb.html">MongoDB</a> tailable consumers now allow setting the <code>readPreference</code> option.</li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>Java DSL using choice with end vs endChoice now validates you use them as intended. Any misconfiguration now throws an exception explaining the problem.</li><li><a shape="rect" href="pojo-producing.html">POJO Producing</a> and&#160;<a shape="rect" href="pojo-consuming.html">POJO Consuming</a> lifecycle is now in sync with <a shape="rect" href="camelcontext.html">CamelContext</a>&#160;which ensures it works as similar to Camel&#160;<a shape="rect" href="routes.html">Routes</a> does. Also the created producer/consumer is stopped when&#160;<a shape="rect" href="camelcontext.html">Cam
 elContext</a>&#160;is stopping to cleanup properly.</li><li><a shape="rect" href="jms.html">JMS</a>&#160;component now allows configuring concurrentConsumers/maxConcurrentConsumers separately between from(jms) vs to(jms) using request/reply over JMS</li><li><span><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8506">Added SEARCH</a> operation to Elasticsearch component</span></li><li><span>The&#160;<a shape="rect" href="properties.html">Properties</a> component (property placeholder) now supports an encoding option to allow reading the .properties files using a specific charset such as UTF-8. By default ISO-8859-1 is used (latin1)</span></li><li><span>Added&#160;<code>receviveBufferSize</code> option to the <a shape="rect" href="ftp.html">FTP</a>&#160;component to make download faster. The size is by default 32kb buffer.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> EIP now allows an external source usin
 g a&#160;<code>AggregateController</code> to control the aggregator, such as for forcing completing a group or all groups, or query runtime information from the aggregator. A default controller is provided out of the box if none has been configured.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> now enlists in JMX using a&#160;<code>ManagedAggregateProcessorMBean</code> which has more information, and also allows using the aggregate controller to control it.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> now includes more runtime statistics which can be accessed from Java and JMX about number of incoming and completed exchanges, and per different completion triggers.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> now supports pre-completion mode if the aggregation strategy implements&#160;<code>PreCompletionAwareAggregationStrategy</code>. This supports the use-case w
 here an incoming Exchange are used to determine if the current aggregated group is completed or not. If completed the group is emitted as-is, and the new incoming Exchange is used to start a new group from scratch.</span></li><li><span>Added options to&#160;<a shape="rect" href="mail.html">Mail</a> consumer so it can skip or handle a mail message that cannot be read from the mail server in the batch; and then move on to read the next message. This ensures the consumer can deal with mail boxes that has problematic mails that otherwise will cause no mails to be retrieve by the consumer in the batch.</span></li><li>The runtime route processors and their corresponding model definition are now linked by their id using <code>HasId</code>, so its easier to obtain the processor or model definition from the <code>getProcessor(id)</code>&#160;and <code>getProcessorDefintion(id)</code>&#160;api on CamelContext.</li><li>CamelContext now also includes a getManagedProcessor API to easily get the 
 mbean client api for the processor, so you can access the runtime JMX statistics from Java code.&#160;</li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> applications now <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8532">block the main thread of the execution</a></span></li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> automagically <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8523">loads XML routes definitions</a> from classpath</span></li><li><span>Added&#160;<code>MainListener</code> to make it easier for Camel Boot / Standalone Camel to implement custom logic to trigger during the starting and stopping of the application.</span></li><li><span><span>Camel Jackson now provides <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8554"><code>Map</code> to <code>Object</code> converter</a></span></span></li><li><span>Ability
  to refer to existing hazelcast instance by id, using&#160;<a shape="rect" href="hazelcast-component.html">Hazelcast Component</a></span></li><li><a shape="rect" href="direct.html">Direct</a> and&#160;<a shape="rect" href="direct-vm.html">Direct-VM</a> now supports the&#160;<span>failIfNoConsumers option</span></li><li>Making it easier to add custom&#160;<a shape="rect" href="type-converter.html">Type Converter</a> to your Camel applications without having to use the META-INF file. In Spring or Blueprint just add them as &lt;bean&gt;s. See more details at&#160;<a shape="rect" href="type-converter.html">Type Converter</a> documentation.</li><li>camel-cxf PAYLOAD supports stream cache out of box.</li><li><p><code>BridgePropertyPlaceholderConfigurer</code> supports to handle the <span><a shape="rect" href="jasypt.html">jasypt </a>encryption inside and outside of the camelContext.</span></p></li><li><p>The camel-aws component now support Amazon DynamoDB version 2<span><br clear="none"><
 /span></p></li><li><p>The&#160;<a shape="rect" href="wire-tap.html">Wire Tap</a> eip now also emits event notifications when sending the Exchange to the wire tap destination</p></li><li><a shape="rect" href="camel-test.html">Camel Test</a> has new option isDumpRouteStats that dumps all route usage statistics as XML files in target/camel-route-stats directory, which can be used to inspect "route coverage" reports.</li><li>Now <a shape="rect" href="netty4.html">Camel Netty</a> component doesn't intercept consumers with <code>httpMethodRestrict=OPTIONS</code></li><li><span>Now <a shape="rect" href="netty4-http.html">Netty HTTP</a> resolves OPTIONS prefix matches earlier</span></li><li>Using&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> with Java DSL now builds the route model using the specific model types, which renders a more accurate route model</li><li>Enhanced the PredicateBuilder to support vargs and list in the "or" builder method</li><li>Using custom&#160;<co
 de>HttpBinding</code> with&#160;<a shape="rect" href="http.html">HTTP</a> and&#160;<a shape="rect" href="http4.html">HTTP4</a> is now easier as they can be instantiated using a default no-arg constructor</li><li>Added&#160;<code>readLock=idempotent</code> to the&#160;<a shape="rect" href="file2.html">File2</a> consumer which allows to reuse an idempotent repository as read-lock which enables Camel to run reliable in clustered mode, where each node competes for the same files from a shared file system. This requires that the idempotent repository supports clustering such as&#160;<a shape="rect" href="hazelcast-component.html">Hazelcast Component</a> or&#160;<a shape="rect" href="infinispan.html">Infinispan</a> - or using the JDBC for a shared database table.</li><li><a shape="rect" href="rx.html">Camel RX</a> now ensures that observe and subscribe are done within an unit of work to ensure on completions is executed, such as they are done when you use regular Camel routes.</li><li>The
 &#160;<a shape="rect" href="jms.html">JMS</a>&#160;component now includes the underlying&#160;<code>javax.jms.Session</code> instance on the Camel message which allows end users to easier to use client acknowledge mode, in case the client wants to use the session to call recover or rollback.</li></ul><p>Fixed the following issues:</p><ul><li>File language now properly supports file extensions having double dots, such as .tar.gz</li><li>Fixed issue with doTry not stopping routing if a fault message was set using setFaultBody within the doTry.</li><li>Fixed&#160;<a shape="rect" href="bean.html">Bean</a>&#160;language to support end parenthesis in quoted string literals as part of method parameters, and not as end of method signature.&#160;</li><li>Fixed&#160;<a shape="rect" href="ftp2.html">FTP2</a> using&#160;<code>pollEnrich</code> with disconnect=true and delete=true, would disconnect before deleting the file. Now we disconnect last.</li><li>Various EIPs such as&#160;<a shape="rect
 " href="splitter.html">Splitter</a>,&#160;<a shape="rect" href="recipient-list.html">Recipient List</a>,&#160;<a shape="rect" href="multicast.html">Multicast</a> no longer reuse message id in their sub messages, but each sub message has its own unique message id (just as the exchange has).</li><li>Fixed an issue with the circuit breaker&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> not honoring the half open after period after an error was detected.</li><li>Fixed&#160;<a shape="rect" href="ftp2.html">FTP2</a> now calling disconnect if there was no messages to poll, even when disconnect=true configured.</li><li>Fixed&#160;<a shape="rect" href="throttler.html">Throttler</a> using method call expression in XML DSL was not working</li><li>Fixed stopping a route may stop context scoped&#160;OnException that would otherwise send message to an endpoint, now been stopped and an IllegalStateException was thrown while handling the exception.</li><li>Fixed using a&#160;<a sh
 ape="rect" href="load-balancer.html">Load Balancer</a> from a context scoped&#160;onException may double up its processors participating in the balancer per route in the context.</li><li>Fixed&#160;<code>parallelAggregate</code> on multicast/splitter/recipient list to use a thread pool for running concurrently.&#160;</li><li>Fixed&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to not delete data that was spooled to disk before both exchanges are done routing.</li><li>Fixed&#160;<a shape="rect" href="defaulterrorhandler.html">DefaultErrorHandler</a> to use 1 sec redelivery delay out of the box as the other error handlers does.&#160;</li><li>Fixed setting&#160;<code>logExhaustedMessageHistory=true</code> on&#160;<a shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to log the message history. This option is by default false on DLC as it would be as before (not noisy).</li><li>Fixed double refresh of the parent Spring Boot Application Context</li><
 /ul><h3 id="Camel2.16.0Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.16.0Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li><a shape="rect" href="paho.html">camel-paho</a>&#160;- For MQTT messaging using Eclipse Paho client</li><li>camel-pdf - For creating PDF documents</li></ul><h3 id="Camel2.16.0Release-NewDSL">New DSL</h3><h3 id="Camel2.16.0Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.16.0Release-NewDataFormats">New <a shape="rect" href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" href="boon.html">camel-boon</a> - For mapping POJO to/from json</li></ul><h3 id="Camel2.16.0Release-New.2">New <a shape="rect" href="languages.html">Languages</a></h3><h3 id="Camel2.16.0Release-New.3">New <a shape="rect" href="examples.html">Examples</a></h3><h3 id="Camel2.16.0Release-New.4">New <a shape="rect" href="tutorials.html">Tutorials</a></h3><h
 2 id="Camel2.16.0Release-APIbreaking">API breaking</h2><ul><li><p class="p1">&#160;org.apache.camel.mode.LoadBalancerDefinition no longer implements org.apache.camel.processor.loadbalancer.LoadBalancer&#160;which is the runtime processor (this was never intended).</p></li><li>The&#160;<code>ref</code> attribute on&#160;<code>&lt;loadBalance&gt;</code> has been removed, as it has been deprecated for a long time, and you should use a&#160;<code>&lt;customLoadBalancer&gt;</code> to refer to a custom load balancer.</li><li>The&#160;<code>copy</code> method on&#160;<code>StreamCache</code> now takes an&#160;<code>Exchange</code> as parameter.</li><li>Various APIs in&#160;<code>camel-jms</code> has been adjusted to support including the JMS session parameter - <code>javax.jms.Session</code>. Though these API changes are mostly internal facing, and we do not expect end users problems.</li></ul><h2 id="Camel2.16.0Release-KnownIssues">Known Issues</h2><h2 id="Camel2.16.0Release-Dependencyupg
 rades">Dependency upgrades</h2><ul><li>Amazon Web Service Java SDK from 1.8.9.1 to 1.9.34</li><li>Apache JClouds from 1.8.1 to 1.9.0</li><li>Apache Olingo Odata from 2.0.0 to 2.0.3</li><li>Apns from 0.2.3 to 1.0.0.Beta6</li><li>AspectJ from 1.6.2 to 1.8.5</li><li>Async-http-client from 1.9.8 to 1.9.17</li><li>Cassandra from 2.1.2 to 2.1.4</li><li><p>Cassandra Datastax Java Driver from 2.1.2 to 2.1.5</p></li><li>DNSJava from 2.1.6 to 2.1.7</li><li>Docker-java from 0.10.5 to 1.2.0</li><li>Dropbox core Java SDK from 1.7.6 to 1.7.7</li><li>Dropwizard Metrics from 3.1.0 to 3.1.1</li><li>Ehcache from 2.9.1 to 2.10.0</li><li>Facebook4j from 1.1.12 to 2.2.2</li><li>Freemarker from 2.3.21 to 2.3.22</li><li>Google App Engine from 1.8.3 to 1.9.19&#160;</li><li>Gson from 3.2 to 3.2.1</li><li>iCal4j from 1.5.0.2 to 1.6.0</li><li>Infinispan from 6.0.2.Final to 7.2.0.Final</li><li><span>Jackson2 from 2.4.3 to 2.5.1</span></li><li><span>Jsch from 0.1.51 to 0.1.52</span></li><li>Jsonpath from 1.2.0 
 to 2.0.0</li><li>Kafka from 0.8.1.1 to 0.8.2.0</li><li>LightCouch from 0.1.3 to 0.1.6</li><li>MongoDB Java Driver from 2.12.4 to 3.0.0</li><li>MongoDB test harness from 1.46.4 to 1.47.2</li><li>Mvel2 from 2.2.1.Final to 2.2.4.Final</li><li>OGNL from 3.0.8 to 3.0.9</li><li>OpenJPA from 2.3.0 to 2.4.0</li><li>Openshift Java Client 2.5.0.Final to 2.7.0.Final</li><li>PDFBox from 1.6.0 to 1.8.9</li><li>Restlet from 2.2.x to 2.3.1<span><br clear="none"></span></li><li>SLF4J from 1.7.10 to 1.7.12</li><li>Snakeyaml from 1.14 to 1.15</li><li>Spring upgrades</li><li>TestNG from 6.8.8 to 6.8.21</li><li>Twitter4J from 4.0.2 to 4.0.3</li><li>XStream from 1.4.7 to 1.4.8</li></ul><h2 id="Camel2.16.0Release-Importantchangestoconsiderwhenupgrading">Important changes to consider when upgrading</h2><ul><li>The dumpRoutesAsXml operation now preserve property placeholder used in the route models.&#160;</li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existin
 g headers/attachments by setting on existing IN or OUT message.</li><li>If using concurrent consumer on&#160;<a shape="rect" href="jms.html">JMS</a>&#160;endpoints for request/reply over JMS then you must use the new replyToConcurrentConsumers, replyToMaxConcurrentConsumers options to configure the values.&#160;</li><li>When the&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> is forced completed the exchange property&#160;<code>Exchange.AGGREGATED_COMPLETED_BY</code> value has been changed from "forceCompletion" to "force" so its named like the other completion triggers.</li><li>Removed unsupported modules camel-web and camel-web-standalone.</li><li>Removed unsupported camel:dot functionality from camel:run plugin.</li><li>Removed unsupported camel-archetype-scala-component from maven archetypes.</li><li>The Maven coordinate for linkedin and olingo2 components changed to be aligned like all the others having groupId as just org.apache.camel.</li><li>If using MongoDB com
 ponent, the option<em> invokeGetLastError</em> doesn't exist anymore. The option invokeGetLastError instructs the MongoDB Java driver to invoke <em>getLastError()</em> after every call. In the 3.0.0 MongoDB driver implementation, the <em>getLastError()</em> method in WriteResult has been removed. So, if needed, use an acknowledged WriteConcern when executing the write operation and then verify the correctness of the operation with the method <em>wasAcknowledged()</em> of WriteResult.</li><li>The&#160;<a shape="rect" href="jing.html">Jing</a> component now uses&#160;<code>jing</code> as schema name in uris, instead of&#160;<code>rng</code> or&#160;<code>rnc</code>. Those names has been removed.</li></ul><h2 id="Camel2.16.0Release-GettingtheDistributions">Getting the Distributions</h2><h3 id="Camel2.16.0Release-BinaryDistributions">Binary Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description<
 /p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.16.0/apache-camel-2.16.0.zip">apache-camel-2.16.0.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/2.16.0/apache-camel-2.16.0.zip.asc">apache-camel-2.16.0.zip.asc</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.16.0/apache-camel-2.16.0.tar.gz">apache-ca
 mel-2.16.0.tar.gz</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/2.16.0/apache-camel-2.16.0.tar.gz.asc">apache-camel-2.16.0.tar.gz.asc</a></p></td></tr></tbody></table></div>    <div class="aui-message hint shadowed information-macro">
+<div class="wiki-content maincontent"><h1 id="Camel2.16.0Release-Camel2.16.0release(currentlyinprogress)">Camel 2.16.0&#160;release (currently in progress)</h1><div style="padding-right:20px;float:left;margin-left:-20px;"><p><img class="confluence-embedded-image confluence-external-resource" src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png" data-image-src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"></p></div><div style="min-height:200px">&#160;</div><h2 id="Camel2.16.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.16.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><p>Noteworthy improvements:</p><ul><li>The route models (definition classes) preserve property placeholders, which allows round trip editing, and also prevents showing potential sensitive information</li><li>Added onPrepareFailure option to&#160;<a shape="rect" href="dead-letter-channel.html">Dead Letter Ch
 annel</a> to allow a custom processor to prepare the Exchange before sending to the dead letter queue.</li><li><a shape="rect" href="mongodb.html">MongoDB</a> tailable consumers now allow setting the <code>readPreference</code> option.</li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>Java DSL using choice with end vs endChoice now validates you use them as intended. Any misconfiguration now throws an exception explaining the problem.</li><li><a shape="rect" href="pojo-producing.html">POJO Producing</a> and&#160;<a shape="rect" href="pojo-consuming.html">POJO Consuming</a> lifecycle is now in sync with <a shape="rect" href="camelcontext.html">CamelContext</a>&#160;which ensures it works as similar to Camel&#160;<a shape="rect" href="routes.html">Routes</a> does. Also the created producer/consumer is stopped when&#160;<a shape="rect" href="camelcontext.html">Cam
 elContext</a>&#160;is stopping to cleanup properly.</li><li><a shape="rect" href="jms.html">JMS</a>&#160;component now allows configuring concurrentConsumers/maxConcurrentConsumers separately between from(jms) vs to(jms) using request/reply over JMS</li><li><span><a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8506">Added SEARCH</a> operation to Elasticsearch component</span></li><li><span>The&#160;<a shape="rect" href="properties.html">Properties</a> component (property placeholder) now supports an encoding option to allow reading the .properties files using a specific charset such as UTF-8. By default ISO-8859-1 is used (latin1)</span></li><li><span>Added&#160;<code>receviveBufferSize</code> option to the <a shape="rect" href="ftp.html">FTP</a>&#160;component to make download faster. The size is by default 32kb buffer.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> EIP now allows an external source usin
 g a&#160;<code>AggregateController</code> to control the aggregator, such as for forcing completing a group or all groups, or query runtime information from the aggregator. A default controller is provided out of the box if none has been configured.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> now enlists in JMX using a&#160;<code>ManagedAggregateProcessorMBean</code> which has more information, and also allows using the aggregate controller to control it.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> now includes more runtime statistics which can be accessed from Java and JMX about number of incoming and completed exchanges, and per different completion triggers.</span></li><li><span>The&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> now supports pre-completion mode if the aggregation strategy implements&#160;<code>PreCompletionAwareAggregationStrategy</code>. This supports the use-case w
 here an incoming Exchange are used to determine if the current aggregated group is completed or not. If completed the group is emitted as-is, and the new incoming Exchange is used to start a new group from scratch.</span></li><li><span>Added options to&#160;<a shape="rect" href="mail.html">Mail</a> consumer so it can skip or handle a mail message that cannot be read from the mail server in the batch; and then move on to read the next message. This ensures the consumer can deal with mail boxes that has problematic mails that otherwise will cause no mails to be retrieve by the consumer in the batch.</span></li><li>The runtime route processors and their corresponding model definition are now linked by their id using <code>HasId</code>, so its easier to obtain the processor or model definition from the <code>getProcessor(id)</code>&#160;and <code>getProcessorDefintion(id)</code>&#160;api on CamelContext.</li><li>CamelContext now also includes a getManagedProcessor API to easily get the 
 mbean client api for the processor, so you can access the runtime JMX statistics from Java code.&#160;</li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> applications now <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8532">block the main thread of the execution</a></span></li><li><span><a shape="rect" href="spring-boot.html">Spring Boot</a> automagically <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8523">loads XML routes definitions</a> from classpath</span></li><li><span>Added&#160;<code>MainListener</code> to make it easier for Camel Boot / Standalone Camel to implement custom logic to trigger during the starting and stopping of the application.</span></li><li><span><span>Camel Jackson now provides <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-8554"><code>Map</code> to <code>Object</code> converter</a></span></span></li><li><span>Ability
  to refer to existing hazelcast instance by id, using&#160;<a shape="rect" href="hazelcast-component.html">Hazelcast Component</a></span></li><li><a shape="rect" href="direct.html">Direct</a> and&#160;<a shape="rect" href="direct-vm.html">Direct-VM</a> now supports the&#160;<span>failIfNoConsumers option</span></li><li>Making it easier to add custom&#160;<a shape="rect" href="type-converter.html">Type Converter</a> to your Camel applications without having to use the META-INF file. In Spring or Blueprint just add them as &lt;bean&gt;s. See more details at&#160;<a shape="rect" href="type-converter.html">Type Converter</a> documentation.</li><li>camel-cxf PAYLOAD supports stream cache out of box.</li><li><p><code>BridgePropertyPlaceholderConfigurer</code> supports to handle the <span><a shape="rect" href="jasypt.html">jasypt </a>encryption inside and outside of the camelContext.</span></p></li><li><p>The camel-aws component now support Amazon DynamoDB version 2<span><br clear="none"><
 /span></p></li><li><p>The&#160;<a shape="rect" href="wire-tap.html">Wire Tap</a> eip now also emits event notifications when sending the Exchange to the wire tap destination</p></li><li><a shape="rect" href="camel-test.html">Camel Test</a> has new option isDumpRouteStats that dumps all route usage statistics as XML files in target/camel-route-stats directory, which can be used to inspect "route coverage" reports.</li><li>Now <a shape="rect" href="netty4.html">Camel Netty</a> component doesn't intercept consumers with <code>httpMethodRestrict=OPTIONS</code></li><li><span>Now <a shape="rect" href="netty4-http.html">Netty HTTP</a> resolves OPTIONS prefix matches earlier</span></li><li>Using&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> with Java DSL now builds the route model using the specific model types, which renders a more accurate route model</li><li>Enhanced the PredicateBuilder to support vargs and list in the "or" builder method</li><li>Using custom&#160;<co
 de>HttpBinding</code> with&#160;<a shape="rect" href="http.html">HTTP</a> and&#160;<a shape="rect" href="http4.html">HTTP4</a> is now easier as they can be instantiated using a default no-arg constructor</li><li>Added&#160;<code>readLock=idempotent</code> to the&#160;<a shape="rect" href="file2.html">File2</a> consumer which allows to reuse an idempotent repository as read-lock which enables Camel to run reliable in clustered mode, where each node competes for the same files from a shared file system. This requires that the idempotent repository supports clustering such as&#160;<a shape="rect" href="hazelcast-component.html">Hazelcast Component</a> or&#160;<a shape="rect" href="infinispan.html">Infinispan</a> - or using the JDBC for a shared database table.</li><li><a shape="rect" href="rx.html">Camel RX</a> now ensures that observe and subscribe are done within an unit of work to ensure on completions is executed, such as they are done when you use regular Camel routes.</li><li>The
 &#160;<a shape="rect" href="jms.html">JMS</a>&#160;component now includes the underlying&#160;<code>javax.jms.Session</code> instance on the Camel message which allows end users to easier to use client acknowledge mode, in case the client wants to use the session to call recover or rollback.</li><li>Added scope option to&#160;<a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> to control the boundaries of the EIP to either be in block only mode or to be when the exchange is done being routed. &#160;</li></ul><p>Fixed the following issues:</p><ul><li>File language now properly supports file extensions having double dots, such as .tar.gz</li><li>Fixed issue with doTry not stopping routing if a fault message was set using setFaultBody within the doTry.</li><li>Fixed&#160;<a shape="rect" href="bean.html">Bean</a>&#160;language to support end parenthesis in quoted string literals as part of method parameters, and not as end of method signature.&#160;</li><li>Fixed&#16
 0;<a shape="rect" href="ftp2.html">FTP2</a> using&#160;<code>pollEnrich</code> with disconnect=true and delete=true, would disconnect before deleting the file. Now we disconnect last.</li><li>Various EIPs such as&#160;<a shape="rect" href="splitter.html">Splitter</a>,&#160;<a shape="rect" href="recipient-list.html">Recipient List</a>,&#160;<a shape="rect" href="multicast.html">Multicast</a> no longer reuse message id in their sub messages, but each sub message has its own unique message id (just as the exchange has).</li><li>Fixed an issue with the circuit breaker&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> not honoring the half open after period after an error was detected.</li><li>Fixed&#160;<a shape="rect" href="ftp2.html">FTP2</a> now calling disconnect if there was no messages to poll, even when disconnect=true configured.</li><li>Fixed&#160;<a shape="rect" href="throttler.html">Throttler</a> using method call expression in XML DSL was not working</li><li>F
 ixed stopping a route may stop context scoped&#160;OnException that would otherwise send message to an endpoint, now been stopped and an IllegalStateException was thrown while handling the exception.</li><li>Fixed using a&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> from a context scoped&#160;onException may double up its processors participating in the balancer per route in the context.</li><li>Fixed&#160;<code>parallelAggregate</code> on multicast/splitter/recipient list to use a thread pool for running concurrently.&#160;</li><li>Fixed&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to not delete data that was spooled to disk before both exchanges are done routing.</li><li>Fixed&#160;<a shape="rect" href="defaulterrorhandler.html">DefaultErrorHandler</a> to use 1 sec redelivery delay out of the box as the other error handlers does.&#160;</li><li>Fixed setting&#160;<code>logExhaustedMessageHistory=true</code> on&#160;<a shape="rect" href="dea
 d-letter-channel.html">Dead Letter Channel</a> to log the message history. This option is by default false on DLC as it would be as before (not noisy).</li><li>Fixed double refresh of the parent Spring Boot Application Context</li></ul><h3 id="Camel2.16.0Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.16.0Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li><a shape="rect" href="paho.html">camel-paho</a>&#160;- For MQTT messaging using Eclipse Paho client</li><li>camel-pdf - For creating PDF documents</li></ul><h3 id="Camel2.16.0Release-NewDSL">New DSL</h3><h3 id="Camel2.16.0Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.16.0Release-NewDataFormats">New <a shape="rect" href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" href="boon.html">camel-boon</a> - For mapping POJO to/from json</li></ul><h3 id="Camel2.16.0Release-New.2">New <a shape="re
 ct" href="languages.html">Languages</a></h3><h3 id="Camel2.16.0Release-New.3">New <a shape="rect" href="examples.html">Examples</a></h3><h3 id="Camel2.16.0Release-New.4">New <a shape="rect" href="tutorials.html">Tutorials</a></h3><h2 id="Camel2.16.0Release-APIbreaking">API breaking</h2><ul><li><p class="p1">&#160;org.apache.camel.mode.LoadBalancerDefinition no longer implements org.apache.camel.processor.loadbalancer.LoadBalancer&#160;which is the runtime processor (this was never intended).</p></li><li>The&#160;<code>ref</code> attribute on&#160;<code>&lt;loadBalance&gt;</code> has been removed, as it has been deprecated for a long time, and you should use a&#160;<code>&lt;customLoadBalancer&gt;</code> to refer to a custom load balancer.</li><li>The&#160;<code>copy</code> method on&#160;<code>StreamCache</code> now takes an&#160;<code>Exchange</code> as parameter.</li><li>Various APIs in&#160;<code>camel-jms</code> has been adjusted to support including the JMS session parameter - 
 <code>javax.jms.Session</code>. Though these API changes are mostly internal facing, and we do not expect end users problems.</li></ul><h2 id="Camel2.16.0Release-KnownIssues">Known Issues</h2><h2 id="Camel2.16.0Release-Dependencyupgrades">Dependency upgrades</h2><ul><li>Amazon Web Service Java SDK from 1.8.9.1 to 1.9.34</li><li>Apache JClouds from 1.8.1 to 1.9.0</li><li>Apache Olingo Odata from 2.0.0 to 2.0.3</li><li>Apns from 0.2.3 to 1.0.0.Beta6</li><li>AspectJ from 1.6.2 to 1.8.5</li><li>Async-http-client from 1.9.8 to 1.9.17</li><li>Cassandra from 2.1.2 to 2.1.4</li><li><p>Cassandra Datastax Java Driver from 2.1.2 to 2.1.5</p></li><li>DNSJava from 2.1.6 to 2.1.7</li><li>Docker-java from 0.10.5 to 1.2.0</li><li>Dropbox core Java SDK from 1.7.6 to 1.7.7</li><li>Dropwizard Metrics from 3.1.0 to 3.1.1</li><li>Ehcache from 2.9.1 to 2.10.0</li><li>Facebook4j from 1.1.12 to 2.2.2</li><li>Freemarker from 2.3.21 to 2.3.22</li><li>Google App Engine from 1.8.3 to 1.9.19&#160;</li><li>Gson 
 from 3.2 to 3.2.1</li><li>iCal4j from 1.5.0.2 to 1.6.0</li><li>Infinispan from 6.0.2.Final to 7.2.0.Final</li><li><span>Jackson2 from 2.4.3 to 2.5.1</span></li><li><span>Jsch from 0.1.51 to 0.1.52</span></li><li>Jsonpath from 1.2.0 to 2.0.0</li><li>Kafka from 0.8.1.1 to 0.8.2.0</li><li>LightCouch from 0.1.3 to 0.1.6</li><li>MongoDB Java Driver from 2.12.4 to 3.0.0</li><li>MongoDB test harness from 1.46.4 to 1.47.2</li><li>Mvel2 from 2.2.1.Final to 2.2.4.Final</li><li>OGNL from 3.0.8 to 3.0.9</li><li>OpenJPA from 2.3.0 to 2.4.0</li><li>Openshift Java Client 2.5.0.Final to 2.7.0.Final</li><li>PDFBox from 1.6.0 to 1.8.9</li><li>Restlet from 2.2.x to 2.3.1<span><br clear="none"></span></li><li>SLF4J from 1.7.10 to 1.7.12</li><li>Snakeyaml from 1.14 to 1.15</li><li>Spring upgrades</li><li>TestNG from 6.8.8 to 6.8.21</li><li>Twitter4J from 4.0.2 to 4.0.3</li><li>XStream from 1.4.7 to 1.4.8</li></ul><h2 id="Camel2.16.0Release-Importantchangestoconsiderwhenupgrading">Important changes to co
 nsider when upgrading</h2><ul><li>The dumpRoutesAsXml operation now preserve property placeholder used in the route models.&#160;</li><li>Using setFaultBody / setFaultHeader behaves similar to setBody / setHeader to preserve existing headers/attachments by setting on existing IN or OUT message.</li><li>If using concurrent consumer on&#160;<a shape="rect" href="jms.html">JMS</a>&#160;endpoints for request/reply over JMS then you must use the new replyToConcurrentConsumers, replyToMaxConcurrentConsumers options to configure the values.&#160;</li><li>When the&#160;<a shape="rect" href="aggregator2.html">Aggregator2</a> is forced completed the exchange property&#160;<code>Exchange.AGGREGATED_COMPLETED_BY</code> value has been changed from "forceCompletion" to "force" so its named like the other completion triggers.</li><li>Removed unsupported modules camel-web and camel-web-standalone.</li><li>Removed unsupported camel:dot functionality from camel:run plugin.</li><li>Removed unsupported
  camel-archetype-scala-component from maven archetypes.</li><li>The Maven coordinate for linkedin and olingo2 components changed to be aligned like all the others having groupId as just org.apache.camel.</li><li>If using MongoDB component, the option<em> invokeGetLastError</em> doesn't exist anymore. The option invokeGetLastError instructs the MongoDB Java driver to invoke <em>getLastError()</em> after every call. In the 3.0.0 MongoDB driver implementation, the <em>getLastError()</em> method in WriteResult has been removed. So, if needed, use an acknowledged WriteConcern when executing the write operation and then verify the correctness of the operation with the method <em>wasAcknowledged()</em> of WriteResult.</li><li>The&#160;<a shape="rect" href="jing.html">Jing</a> component now uses&#160;<code>jing</code> as schema name in uris, instead of&#160;<code>rng</code> or&#160;<code>rnc</code>. Those names has been removed.</li></ul><h2 id="Camel2.16.0Release-GettingtheDistributions">G
 etting the Distributions</h2><h3 id="Camel2.16.0Release-BinaryDistributions">Binary Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.16.0/apache-camel-2.16.0.zip">apache-camel-2.16.0.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/2.16.0/apache-camel-2.16.0.zip.asc">apache-camel-2.16.0.zip.asc</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Uni
 x/Linux/Cygwin Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.16.0/apache-camel-2.16.0.tar.gz">apache-camel-2.16.0.tar.gz</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/2.16.0/apache-camel-2.16.0.tar.gz.asc">apache-camel-2.16.0.tar.gz.asc</a></p></td></tr></tbody></table></div>    <div class="aui-message hint shadowed information-macro">
                     <p class="title">The above URLs use redirection</p>
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">

Modified: websites/production/camel/content/idempotent-consumer.html
==============================================================================
--- websites/production/camel/content/idempotent-consumer.html (original)
+++ websites/production/camel/content/idempotent-consumer.html Thu May 14 12:19:36 2015
@@ -86,7 +86,7 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h3 id="IdempotentConsumer-IdempotentConsumer">Idempotent Consumer</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html" rel="nofollow">Idempotent Consumer</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> is used to filter out duplicate messages.</p><p>This pattern is implemented using the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/IdempotentConsumer.html">IdempotentConsumer</a> class. This uses an <a shape="rect" href="expression.html">Expression</a> to calculate a unique message ID string for a given message exchange; this ID can then be looked up in the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">IdempotentRepository</a> to see if it h
 as been seen before; if it has the message is consumed; if its not then the message is processed and the ID is added to the repository.</p><p>The Idempotent Consumer essentially acts like a <a shape="rect" href="message-filter.html">Message Filter</a> to filter out duplicates.</p><p>Camel will add the message id eagerly to the repository to detect duplication also for Exchanges currently in progress.<br clear="none"> On completion Camel will remove the message id from the repository if the Exchange failed, otherwise it stays there.</p><p>Camel provides the following Idempotent Consumer implementations:</p><ul class="alternate"><li>MemoryIdempotentRepository</li><li><a shape="rect" href="file2.html">FileIdempotentRepository</a></li><li><a shape="rect" href="hazelcast-component.html">HazelcastIdempotentRepository</a> (<strong>Available as of Camel 2.8</strong>)</li><li><a shape="rect" href="sql-component.html">JdbcMessageIdRepository</a> (<strong>Available as of Camel 2.7</strong>)</l
 i><li><a shape="rect" href="jpa.html">JpaMessageIdRepository</a></li><li><p><a shape="rect" href="infinispan.html">InfinispanIdempotentRepository</a> (<strong>Available as of Camel 2.13.0)</strong></p></li></ul><h3 id="IdempotentConsumer-Options">Options</h3><p>The Idempotent Consumer has the following options:</p><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>eager</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Eager controls whether Camel adds the message to the repository before or after the exchange has been processed. If enabled before then Camel will be able to detect duplicate messages even when messages are currently
  in progress. By disabling Camel will only detect duplicates when a message has successfully been processed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageIdRepositoryRef</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to a <code>IdempotentRepository</code> to lookup in the registry. This option is mandatory when using XML DSL.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipDuplicate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Sets whether to skip duplicate messages. If set to <code>false</code> then the message will be continued. However the <a shape="rect" href="exchange.html">Exchange</a> has been marked as a duplicate by having the <code>Exchange.DUPLICATE_MESSAG</code> exchange property set to a <code>Boolean.TRUE</
 code> value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>removeOnFailure</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Sets whether to remove the id of an Exchange that failed.</p></td></tr></tbody></table></div><h3 id="IdempotentConsumer-Usingthe"><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></h3><p>The following example will use the header <strong>myMessageId</strong> to filter out duplicates</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h3 id="IdempotentConsumer-IdempotentConsumer">Idempotent Consumer</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/IdempotentReceiver.html" rel="nofollow">Idempotent Consumer</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> is used to filter out duplicate messages.</p><p>This pattern is implemented using the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/IdempotentConsumer.html">IdempotentConsumer</a> class. This uses an <a shape="rect" href="expression.html">Expression</a> to calculate a unique message ID string for a given message exchange; this ID can then be looked up in the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/IdempotentRepository.html">IdempotentRepository</a> to see if it h
 as been seen before; if it has the message is consumed; if its not then the message is processed and the ID is added to the repository.</p><p>The Idempotent Consumer essentially acts like a <a shape="rect" href="message-filter.html">Message Filter</a> to filter out duplicates.</p><p>Camel will add the message id eagerly to the repository to detect duplication also for Exchanges currently in progress.<br clear="none"> On completion Camel will remove the message id from the repository if the Exchange failed, otherwise it stays there.</p><p>Camel provides the following Idempotent Consumer implementations:</p><ul class="alternate"><li>MemoryIdempotentRepository</li><li><a shape="rect" href="file2.html">FileIdempotentRepository</a></li><li><a shape="rect" href="hazelcast-component.html">HazelcastIdempotentRepository</a> (<strong>Available as of Camel 2.8</strong>)</li><li><a shape="rect" href="sql-component.html">JdbcMessageIdRepository</a> (<strong>Available as of Camel 2.7</strong>)</l
 i><li><a shape="rect" href="jpa.html">JpaMessageIdRepository</a></li><li><p><a shape="rect" href="infinispan.html">InfinispanIdempotentRepository</a> (<strong>Available as of Camel 2.13.0)</strong></p></li></ul><h3 id="IdempotentConsumer-Options">Options</h3><p>The Idempotent Consumer has the following options:</p><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>eager</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Eager controls whether Camel adds the message to the repository before or after the exchange has been processed. If enabled before then Camel will be able to detect duplicate messages even when messages are currently
  in progress. By disabling Camel will only detect duplicates when a message has successfully been processed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageIdRepositoryRef</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A reference to a <code>IdempotentRepository</code> to lookup in the registry. This option is mandatory when using XML DSL.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipDuplicate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Sets whether to skip duplicate messages. If set to <code>false</code> then the message will be continued. However the <a shape="rect" href="exchange.html">Exchange</a> has been marked as a duplicate by having the <code>Exchange.DUPLICATE_MESSAG</code> exchange property set to a <code>Boolean.TRUE</
 code> value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>removeOnFailure</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> Sets whether to remove the id of an Exchange that failed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">scope</td><td colspan="1" rowspan="1" class="confluenceTd">OnCompletion</td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> Sets the scope of this idempotent consumer where its boundaries ends.</p><p>The default mode is OnCompletion which means the idempotent consumer will only trigger its completion at the end of the routing of the exchange, when the exchange completes. So if the exchange is continued routed after the block ends, then whatever happens there also affect the state. For example if the exchange failed due to an exception, then the state of the idempotent consumer will 
 be a rollback.</p><p>The other mode BlockOnly means that the idempotent consumer will trigger its completion when the exchange reached the end of the block of the idempotent consumer pattern. So if the exchange is continued routed after the block ends, then whatever happens there does not affect the state.</p></td></tr></tbody></table></div><h3 id="IdempotentConsumer-Usingthe"><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></h3><p>The following example will use the header <strong>myMessageId</strong> to filter out duplicates</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
     public void configure() {



Mime
View raw message