Modified: websites/production/camel/content/camel-2170-release.html
==============================================================================
--- websites/production/camel/content/camel-2170-release.html (original)
+++ websites/production/camel/content/camel-2170-release.html Tue Feb 23 
12:21:03 2016
@@ -85,7 +85,7 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1 
id="Camel2.17.0Release-Camel2.17.0release(currentlyinprogress)">Camel 2.17.0 
release (currently in progress)</h1><div 
style="padding-right:20px;float:left;margin-left:-20px;"><p><span 
class="confluence-embedded-file-wrapper"><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";></span></p></div><div
 style="min-height:200px">&#160;</div><h2 
id="Camel2.17.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to 
the x.y.z release which approx XXX issues resolved (new features, improvements 
and bug fixes such as...)</p><ul><li>The component documentation generated from 
the source code has been double checked to be up to date and include all the 
options the endpoints supports.</li><li><a shape="rect" href="tools.html">Camel 
commands</a> for&#160;<a shape="rect" href="spring-b
 oot.html">Spring Boot</a></li><li>Many improvements to&#160;Camel&#160;<a 
shape="rect" href="kura.html">Kura</a></li><li>Added transacted option 
to&#160;<a shape="rect" href="sql-component.html">SQL Component</a> when used 
as a consumer in a transacted route.</li><li>Added support for UPDATE operation 
to&#160;<a shape="rect" 
href="elasticsearch.html">ElasticSearch</a>.</li><li>Allow to reuse existing 
configured Elasticsearch Client on the <a shape="rect" 
href="elasticsearch.html">ElasticSearch</a> component, instead of creating a 
client per endpoint.&#160;</li><li>The&#160;<code>include</code> 
and&#160;<code>exclude</code> options on&#160;<a shape="rect" 
href="file2.html">File2</a> and&#160;<a shape="rect" href="ftp.html">FTP</a> 
endpoints is now case in-sensitive out of the box.</li><li>Resource based 
component such as&#160;<a shape="rect" href="xslt.html">XSLT</a>,&#160;<a 
shape="rect" href="velocity.html">Velocity</a>&#160;etc can load the resource 
file from the&#160;<a shape="re
 ct" href="registry.html">Registry</a>&#160;by using&#160;<code>ref:</code> as 
prefix.</li><li><span>Upgraded camel-amqp to the latest qpid-jms-client (also 
AMQP &lt; 1.0 is not supported anymore).</span></li><li><span>Many improvements 
to Camel <a shape="rect" href="amqp.html">AMQP</a> 
component.</span></li><li><span>The&#160;<a shape="rect" 
href="metrics-component.html">Metrics Component</a> allows to capture&#160;<a 
shape="rect" href="message-history.html">Message History</a> performance 
statistics with 
the&#160;<code>MetricsMessageHistoryFactory&#160;</code></span></li><li>Reduced 
the number of mbeans enlisted in the services tree, to only include mbeans that 
has value to be managed.</li><li>The&#160;<a shape="rect" 
href="elasticsearch.html">Elasticsearch Component</a>&#160;now supports 
MultiGet operation</li><li>The&#160;<a shape="rect" 
href="throttler.html">Throttler</a> has been improved to be more performant and 
use a rolling window for time periods which gives a better flow.
 </li><li>The&#160;<code>setHeader</code> 
and&#160;<code>setExchangeProperty</code> allows to use a dynamic header key 
using the&#160;<a shape="rect" href="simple.html">Simple</a>&#160;language if 
the name of the key is a&#160;<a shape="rect" 
href="simple.html">Simple</a>&#160;language expression.</li><li>Add collate 
function to&#160;<a shape="rect" href="simple.html">Simple</a> language to make 
it easier to split a message body into sub lists of a specified size. The 
function is similar to the collate function from Groovy.</li><li>The&#160;<a 
shape="rect" href="camel-run-maven-goal.html">Camel Run Maven Goal</a> is able 
to auto detect if its a OSGi Blueprint or CDI project so end users no longer 
have to explicit configure this on the plugin.</li><li><a shape="rect" 
href="elasticsearch.html">Camel-Elasticsearch</a> now supports Multiget, 
Multisearch and exists operation</li><li><a shape="rect" 
href="git.html">Camel-Git</a> now supports Cherry-pick 
operation</li><li>Stopping the&#160;
 <code>Main</code> class from JMX will now trigger shutdown of the Main 
class/JVM also, as it does when hitting ctrl + c.</li><li>Added option to 
skipFirst to the&#160;<a shape="rect" href="tokenizer.html">Tokenizer</a> 
language to make it easy to skip the very first element, when for example 
splitting a CSV file using the&#160;<a shape="rect" 
href="splitter.html">Splitter</a> EIP.</li><li>The&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> now supports default values for query 
parameters</li><li>The&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
now only binds from POJO to JSon/XML if the content-type is for json or xml. 
This allows you to specify a custom content-type and omit the binding, such as 
when having binary payloads.</li><li>Exchange and Message only output id in 
their toString method to avoid outputting any message details such as sensitive 
details from message bodies.</li><li>Camel&#160;<a shape="rect" 
href="error-handler.html">Error Handler</a> no longer 
 log message body/header details when logging the <a shape="rect" 
href="message-history.html">Message History</a>. This avoids logging 
any&#160;sensitive details from message bodies.</li><li>Camel&#160;<a 
shape="rect" href="exception-clause.html">Exception Clause</a> and&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> now supports using a 
custom&#160;<code>Processor</code> to be invoked right after an exception was 
thrown using the new&#160;<strong>onExceptionOccurred</strong> 
option.</li><li><a shape="rect" href="rabbitmq.html">RabbitMQ</a> consumer more 
resilient to auto re-connect in case of connection failures</li><li>The&#160;<a 
shape="rect" href="json.html">JSON</a> <code>camel-jackson</code>&#160;can be 
used as a type converter to convert json to/from POJO and String/byte[] types, 
if enabled.</li><li>The&#160;<a shape="rect" href="sql-component.html">SQL 
Component</a> now supports loading the SQL queries from external files on the 
classpath or file system, whe
 re you can format the queries using newlines and 
indenting.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> consumer 
allows to use an idempotent repository&#160;which allows to cluster consuming 
from the same mailbox, and let the repository coordinate whether a mail message 
is valid for the consumer to process.</li><li>Added support for completion 
interval on the&#160;<a shape="rect" href="sjms-batch.html">SJMS Batch</a> 
component, which allows to trigger batch completion in a fixed scheduled 
interval.</li><li>The&#160;<a shape="rect" href="http.html">HTTP</a> 
and&#160;<a shape="rect" href="http4.html">HTTP4</a> producers now support 
the&#160;<code>disableStreamCache</code> option to allow to use the raw 
response stream as the message body instead of wrapping using&#160;<a 
shape="rect" href="stream-caching.html">Stream caching</a></li><li>The <a 
shape="rect" href="cdi.html">Camel CDI</a> component has been improved to 
better fit into the CDI programming model, cover a lar
 ger set of containers, and provide these new features:<ul><li>The Camel events 
from the <code>org.apache.camel.management.event</code> package (like 
<code>CamelContextStartedEvent</code>)&#160;can be observed as CDI 
events</li><li>The new CDI event Camel endpoint enable&#160;<span>CDI events to 
be seamlessly consumed from (respectively produced by) Camel consumers 
(respectively Camel producers)</span></li><li><span><span>CDI beans annotated 
with the&#160;</span><code>@Converter</code><span>&#160;annotation are 
automatically registered as type 
converters</span></span></li><li><span><span>The CDI Camel contexts can 
be&#160;properly customised programmatically in bean constructor 
or&#160;<code>@PostConstruct</code> lifecycle 
callback</span></span></li><li>Camel routes configured in 
<code>RouteBuilder</code> beans are added before the corresponding Camel 
contexts get started</li><li><span>CDI Camel contexts are now properly adapted 
when deployed in OSGi containers and are registered as 
 OSGi services</span></li><li>Proper support of multiple Camel contexts across 
all the features<span><br clear="none"></span></li></ul></li><li>The&#160;<a 
shape="rect" href="xslt.html">XSLT</a> component now supports Saxon's&#160;<a 
shape="rect" class="external-link" 
href="http://www.saxonica.com/html/documentation/extensibility/integratedfunctions";
 rel="nofollow" title="Follow link">integrated extension 
functions</a>.</li><li>Idempotent Repository now supports optional serialized 
headers&#160;</li></ul><p>Fixed these issues</p><ul><li>The&#160;<a 
shape="rect" href="swagger-java.html">Swagger Java</a> now parses nested types 
in the POJO model that has been annotated with the swagger api annotations to 
use in the schema api model</li><li>Fixed&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> with&#160;apiContextPath fail to start if 
there are 2 ore more rest's in use.</li><li>Paho component name is not limited 
to 4 characters anymore.</li><li>Fixed&#160;<a shape="rect" href="sp
 ring-boot.html">Spring Boot</a> not starting Camel routes if running in Spring 
Cloud.</li><li>Fixed an issue with&#160;<a shape="rect" 
href="swagger-java.html">Swagger Java</a> using api-docs could lead to api-doc 
route being added multiple times</li><li>Fixed a few things missing in the 
generated swagger model when using&#160;<a shape="rect" 
href="swagger-java.html">Swagger Java</a></li><li>Fixed 
using&#160;<code>statement.xxx</code> options on the&#160;<a shape="rect" 
href="jdbc.html">JDBC</a> consumer would only be used in first 
poll.</li><li>Fixed &#160;<a shape="rect" 
href="http.html">HTTP</a>&#160;and&#160;<a shape="rect" 
href="http4.html">HTTP4</a>&#160;to keep trailing slash if provided in uri when 
calling remote HTTP service.</li><li>Fixed&#160;<a shape="rect" 
href="oncompletion.html">OnCompletion</a> to keep any caught exception stored 
as property on the&#160;<code>Exchange</code> which allows to access that 
information to know if there was an exception during routing.</li
 ><li>Fixed an issue with&#160;<a shape="rect" href="bean.html">Bean</a> 
 >component or&#160;<a shape="rect" href="simple.html">Simple</a> language with 
 >OGNL method call, would pick method with java.lang.Object type over a better 
 >suited method, when the method is 
 >overloaded.</li><li>Fixed&#160;<code>camel-blueprint</code> to wait for the 
 >bundles with the component and data-formats the&#160;<a shape="rect" 
 >href="rest-dsl.html">Rest DSL</a> has been configured to use, are available 
 >before starting Camel.</li><li>Fixed an issue with&#160;<a shape="rect" 
 >href="error-handler.html">Error Handler</a> would log any handled(true) 
 >exceptions.</li><li>Fixed a memory leak if adding/removing routes 
 >using&#160;<a shape="rect" href="idempotent-consumer.html">Idempotent 
 >Consumer</a> where the repository would not be removed from the JMX registry 
 >when routes is removed.</li><li>Fixed issue with&#160;<a shape="rect" 
 >href="spring-boot.html">Spring Boot</a> would eager shutdown some Camel 
 >resources like t
 ype converters, which spring-boot should let Camel handle the lifecycle of 
these resources.</li><li>Fixed&#160;<a shape="rect" href="cxfrs.html">CXFRS</a> 
using simple binding mode would use the content-length header from the incoming 
message in the response, instead of calculating the length based on the output 
message body.</li><li>Fixed&#160;<a shape="rect" 
href="idempotent-consumer.html">Idempotent Consumer</a> would not propagate 
exception thrown from&#160;<code>IdempotentRepository</code> to Camel's&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> such 
as&#160;<code>onException</code><code><br clear="none"></code></li></ul><h3 
id="Camel2.17.0Release-New">New <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a></h3><h3 id="Camel2.17.0Release-New.1">New <a shape="rect" 
href="components.html">Components</a></h3><ul><li>camel-kubernetes - Integrates 
Camel with Kubernetes</li><li>camel-etc - Integrating Camel with etcd</li>
 <li><a shape="rect" href="aws-kinesis.html">camel-aws</a> - AWS kinesis 
streams component added</li><li><a shape="rect" 
href="aws-ddbstream.html">camel-aws</a> - DynamoDB streams component 
added</li><li><a shape="rect" href="ignite.html">camel-ignite</a> - for working 
with Apache Ignite.</li><li><a shape="rect" href="mllp.html">camel-mllp</a> 
-&#160;<span style="color: rgb(0,0,0);">for working with the HL7 MLLP protocol. 
This is an alternative to&#160;<a shape="rect" href="hl7.html">HL7</a> 
component.</span></li><li><span style="color: rgb(0,0,0);">camel-nats - for 
interacting with Nats messaging platform</span></li><li><a shape="rect" 
href="apache-spark.html">camel-spark</a> - bridges Apache Spark computations 
with Camel endpoints</li><li><a shape="rect" 
href="sql-stored-procedure.html">camel-sql</a> - Now supports calling stored 
procedures using the new <a shape="rect" 
href="sql-stored-procedure.html">sql-stored 
component</a>.</li><li>camel-braintree - for interacting with Braintr
 ee Payments.</li></ul><h3 id="Camel2.17.0Release-NewDSL">New DSL</h3><h3 
id="Camel2.17.0Release-NewAnnotations">New Annotations</h3><h3 
id="Camel2.17.0Release-NewDataFormats">New <a shape="rect" 
href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" 
href="mime-multipart.html">MIME-Multipart</a> - mime based data 
format.</li><li><a shape="rect" href="lzf-data-format.html">LZF Data Format</a> 
- LZF based data format.&#160;</li></ul><h3 id="Camel2.17.0Release-New.2">New 
<a shape="rect" href="languages.html">Languages</a></h3><h3 
id="Camel2.17.0Release-New.3">New <a shape="rect" 
href="examples.html">Examples</a></h3><ul><li>camel-example-cdi-metrics - 
illustrates the integration between Camel, Dropwizard Metrics and 
CDI.</li><li>camel-example-cdi-properties -&#160;<span>illustrates the 
integration between Camel, DeltaSpike and CDI for configuration 
properties.</span></li><li><span>camel-example-cdi-osgi - a<span>&#160;CDI 
application using the SJMS component that can be ex
 ecuted inside an OSGi container using PAX 
CDI.</span></span></li><li><span>camel-example-cdi-rest-servlet 
-&#160;<span>illustrates the Camel REST DSL being used in a Web application 
that uses CDI as dependency injection 
framework</span></span></li><li>camel-example-spring-boot-metrics - showing a 
Camel spring-boot application that report metrics to Graphite. Requires 
Graphite running on your network.</li><li>camel-example-widget-gadget-cdi - The 
Widget and Gadget use-case from the EIP book implemented in Java with CDI 
dependency Injection.</li><li>camel-example-widget-gadget-java - The Widget and 
Gadget use-case from the EIP book implemented in plain old Java Main without 
any kind of <em>application 
server</em>.</li><li>camel-example-widget-gadget-xml - The Widget and Gadget 
use-case from the EIP book implemented in Spring XML without any Java code or 
any kind of&#160;<em>application server</em>.</li></ul><h3 
id="Camel2.17.0Release-New.4">New <a shape="rect" href="tutorials.html">Tu
 torials</a></h3><h2 id="Camel2.17.0Release-APIbreaking">API 
breaking</h2><ul><li>As part of the <a shape="rect" href="cdi.html">Camel 
CDI</a> component refactoring:<ul><li>The 
<code>@ContextName</code>&#160;qualifier does not have a default empty value 
anymore as it is irrelevant</li><li>The&#160;CdiPropertiesComponent&#160;class 
has been removed, the standard&#160;PropertiesComponent&#160;can be used 
instead</li></ul></li></ul><h2 id="Camel2.17.0Release-KnownIssues">Known 
Issues</h2><h2 id="Camel2.17.0Release-Dependencyupgrades">Dependency 
upgrades</h2><ul><li>Apache Cassandra from 2.1.8 to 2.2.2</li><li>Apache 
Deltaspike from 1.5.1 to 1.5.2</li><li>Apache Gora from 0.6 to 
0.6.1</li><li>Apache Jackrabbit from 2.11.0 to 2.11.3</li><li>Apache Kafka from 
0.8.2.2 to 0.9.0.0</li><li>Apache Lucene from 4.10.4 to 5.2.1</li><li>Apache 
Mina from 2.0.9 to 2.0.10</li><li>Apache OpenEjb from 4.7.2 to 
4.7.3</li><li>Apache Solr from 4.10.4 to 5.2.1</li><li>Aws SDK Java to version 
1.10.37</li><li
 >Atmosphere from <span class="blob-code-inner">2.4.0</span> to 
 >2.4.1.4</li><li>Cassandra driver from 2.1.8 to 2.1.9</li><li>Cassandra-unit 
 >from 2.1.9.2 to 2.2.2.1</li><li>Cglib from 3.1 to 3.2.0</li><li>Classmate 
 >from 1.3.0 to 1.3.1</li><li>Chunk from 3.0.1 to 3.1.2</li><li>Drools from 
 >6.2.0.Final to 6.3.0.Final</li><li>EHCache from 2.10.0 to 
 >2.10.1</li><li>Elasticsearch from 1.7.3 to 2.0.0</li><li>Embedded Mongodb 
 >from 1.50.0 to 1.50.2</li><li>Facebook4j from 2.3.1 to 2.4.2</li><li>GAE from 
 >1.9.26 to 1.9.32</li><li>Google Gson from 2.4 to 2.61</li><li>Hazelcast from 
 >3.5.2 to 3.6</li><li>Infinispan from 8.0.1.Final to 
 >8.1.2.Final</li><li>Jackson from 2.6.3 to 2.7.1</li><li>Jboss Xnio from 
 >3.3.1.Final to 3.3.4.Final</li><li>Jboss Weld from 2.3.0.Final to 
 >2.3.3.Final</li><li>Jbpm from 6.2.0.Final to 6.3.0.Final</li><li>Jgit from 
 ><span class="blob-code-inner">4.1.<span class="x x-first 
 >x-last">0.201509280440</span>-r</span> to <span 
 >class="blob-code-inner">4.1.<span class="x x-first x-
 last">1.201511131810</span>-r</span></li><li>Joda-time from 2.8.2 to 
2.9.1</li><li>Json-path from 2.0.0 to 2.1.0</li><li>Jt400 from 8.6 to 
8.7</li><li>Kie from 6.2.0.Final to 6.3.0.Final</li><li>Maven Exec plugin from 
1.2.1 to 1.4.0</li><li>Mongodb Java driver from 3.0.4 to 3.2.0</li><li>Mvel 
from 2.2.6.Final to 2.2.7.Final</li><li>Ognl from 3.1 to 3.1.1</li><li>Olingo 
from 2.0.4 to 2.0.5</li><li>Optaplanner from 6.2.0.Final to 
6.3.0.Final</li><li>Pax-exam from 4.6.0 to 4.8.0</li><li>Spring 4.1.x to 
4.2.x</li><li>Spring-Boot 1.2.x to 1.3.x</li><li>Spring Integration 2.x to 
4.x</li><li>slf4j-api 1.6.x to 1.7.x</li><li>Undertow from 1.3.3.Final to 
1.3.7.Final</li><li>Vertx from 3.1.0 to 3.2.0</li><li>Zookeeper from 3.4.6 to 
3.4.7</li></ul><h2 
id="Camel2.17.0Release-Importantchangestoconsiderwhenupgrading">Important 
changes to consider when upgrading</h2><ul><li><strong>This is the last release 
that will support Java 1.7. Releases after this is expected to require Java 
1.8+.&#160;</str
 ong></li><li>Any custom component that supports suspension in 
doSuspend/doResume should implement the new&#160;<code>Suspendable</code> 
marker interface, so Camel knows there is custom logic for suspension in the 
component.</li><li>Exchange and Message only output id in their toString method 
to avoid outputting any message details such as sensitive details from message 
bodies.</li><li>Removed camel-hbase as Karaf feature as it did not really work 
well in OSGi</li><li>Upgraded camel-hbase to Hadoop 2.x and HBase 
1.1.x</li><li>camel-infinispan requires Java 8.</li><li>camel-mustache requires 
Java 8.</li><li>Support for Spring 4.0.x is deprecated. Support for Spring 3.x 
is being <strong>removed</strong> in the next release.</li><li>Support for 
Karaf 2.x and 3.x is deprecated. And removed in next release, where Karaf 4.x 
onwards is only supported.</li><li>camel-jetty8 is deprecated and being removed 
in next release.</li><li>Moved some Camel tooling related dependencies (such as 
maven/pl
 exus) from the Camel Parent BOM to the tooling BOM (to have them 
separated).</li><li>camel-amqp do not support 0.9 
anymore.&#160;</li><li>camel-spring-integration feature has been removed from 
the Camel karaf.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> 
component now requires to configure to, cc, and bcc using lower case keys, eg 
to=f...@bar.com, instead of&#160;<a shape="rect" class="external-link" 
href="mailto:To=f...@bar.com"; rel="nofollow">To=f...@bar.com</a>&#160;as 
previously.</li><li>The&#160;<a shape="rect" 
href="file2.html">File</a>&#160;consumer no longer probe the file content by 
default. See the option&#160;<code>probeContentType</code> for more 
details.</li><li>If using&#160;<a shape="rect" 
href="bean.html">Bean</a>&#160;or&#160;<a shape="rect" 
href="class.html">Class</a>&#160;component and specifying additional parameters 
in the endpoint uri to configure on the bean, then these options should now be 
prefixed with bean., eg <code>foo=123</code>&#160;is now <
 code>bean.foo=123</code>.</li><li>The&#160;<a shape="rect" 
href="twitter.html">Twitter</a> delay option is changed from seconds to milli 
seconds by default, eg 10 should be 10000 to indicate 10 seconds. This is 
aligned how other components with delay option behaves.&#160;</li><li>The 
options&#160;<code>attributeNames</code> 
and&#160;<code>messageAttributeNames</code> on&#160;<a shape="rect" 
href="aws-sqs.html">AWS-SQS</a> is changed to a string type where you can 
separate multiple values using comma. Before the type was a Collection which 
was much harder to configure in the Camel uris.</li><li>The&#160;<a 
shape="rect" href="hbase.html">hbase</a> component now require row mapping from 
the endpoint uri to be prefixed with <code style="line-height: 
1.42857;">row.</code>&#160;as prefix.<br clear="none">Before: 
<code>family=info&amp;qualifier=firstName&amp;family2=birthdate&amp;qualifier2=year</code>.&#160;After:&#160;<code>row.family=info&amp;row.qualifier=firstName&amp;row.family2=birt
 hdate&amp;row.qualifier2=year</code>.</li><li>As part of the <a shape="rect" 
href="cdi.html">Camel CDI</a> component refactoring,&#160;<em>DeltaSpike</em> 
is not used anymore for the sourcing of the configuration properties. This new 
version of the component is agnostic to any configuration sourcing mechanism 
and delegates that concern to the application so that it can declare a 
custom&#160;<code>PropertiesComponent</code>&#160;bean whose sourcing is 
tailored to its need. <em>DeltaSpike</em> can still be used by the application 
by declaring a&#160;<code>PropertiesComponent</code>&#160;bean configured with 
a&#160;<code>PropertiesParser</code>&#160;relying on <em>DeltaSpike</em>. See 
the&#160;<code>camel-example-cdi-properties</code>&#160;example for more 
details.</li></ul><h2 id="Camel2.17.0Release-GettingtheDistributions">Getting 
the Distributions</h2><h3 id="Camel2.17.0Release-BinaryDistributions">Binary 
Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbod
 y><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/x.y.x/apache-camel-x.y.x.zip";>apache-camel-x.y.x.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/x.y.x/apache-camel-x.y.x.zip.asc";>apache-camel-x.y.x.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/x.y.x/apache-camel-x.y.x.tar.gz">apache-camel-x.y.x.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/x.y.x/apache-camel-x.y.x.tar.gz.asc";>apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div
 class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The above URLs use 
redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The above URLs use the Apache 
Mirror system to redirect you to a suitable mirror for your download. Some 
users have experienced issues with some versions of browsers (e.g. some Safari 
browsers). If the download doesn't seem to work for you from the above URL then 
try using <a shape="rect" class="external-link" 
href="http://www.mozilla.com/en-US/firefox/"; rel="nofollow">FireF
 ox</a></p></div></div><h3 id="Camel2.17.0Release-SourceDistributions">Source 
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>Source for Windows</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/x.y.x/apache-camel-x.y.x-src.zip";>apache-camel-x.y.x-src.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/x.y.x/apache-camel-x.y.x-src.zip.asc";>apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><div
 class="table-wrap"><table class
 ="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Source for Unix/Linux/Cygwin</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/x.y.x/apache-camel-x.y.x-src.tar.gz";>apache-camel-x.y.x-src.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/x.y.x/apache-camel-x.y.x-src.tar.gz.asc";>apache-camel-x.y.x-src.tar.gz.asc</a></p></td></tr></tbody></table></div><h3
 id="Camel2.17.0Release-GettingtheBinariesusingMaven2">Getting the Binaries 
using Maven 2</h3><p>To use this release in your maven project, the proper 
dependency configuration that you should use in your <a shape="rect" 
class="external-link" 
href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html";>Maven
 POM</a> is:</p><div class="code panel pdl" style="border-wid
 th: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h1 
id="Camel2.17.0Release-Camel2.17.0release(currentlyinprogress)">Camel 2.17.0 
release (currently in progress)</h1><div 
style="padding-right:20px;float:left;margin-left:-20px;"><p><span 
class="confluence-embedded-file-wrapper"><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";></span></p></div><div
 style="min-height:200px">&#160;</div><h2 
id="Camel2.17.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to 
the x.y.z release which approx XXX issues resolved (new features, improvements 
and bug fixes such as...)</p><ul><li>The component documentation generated from 
the source code has been double checked to be up to date and include all the 
options the endpoints supports.</li><li><a shape="rect" href="tools.html">Camel 
commands</a> for&#160;<a shape="rect" href="spring-b
 oot.html">Spring Boot</a></li><li>Many improvements to&#160;Camel&#160;<a 
shape="rect" href="kura.html">Kura</a></li><li>Added transacted option 
to&#160;<a shape="rect" href="sql-component.html">SQL Component</a> when used 
as a consumer in a transacted route.</li><li>Added support for UPDATE operation 
to&#160;<a shape="rect" 
href="elasticsearch.html">ElasticSearch</a>.</li><li>Allow to reuse existing 
configured Elasticsearch Client on the <a shape="rect" 
href="elasticsearch.html">ElasticSearch</a> component, instead of creating a 
client per endpoint.&#160;</li><li>The&#160;<code>include</code> 
and&#160;<code>exclude</code> options on&#160;<a shape="rect" 
href="file2.html">File2</a> and&#160;<a shape="rect" href="ftp.html">FTP</a> 
endpoints is now case in-sensitive out of the box.</li><li>Resource based 
component such as&#160;<a shape="rect" href="xslt.html">XSLT</a>,&#160;<a 
shape="rect" href="velocity.html">Velocity</a>&#160;etc can load the resource 
file from the&#160;<a shape="re
 ct" href="registry.html">Registry</a>&#160;by using&#160;<code>ref:</code> as 
prefix.</li><li><span>Upgraded camel-amqp to the latest qpid-jms-client (also 
AMQP &lt; 1.0 is not supported anymore).</span></li><li><span>Many improvements 
to Camel <a shape="rect" href="amqp.html">AMQP</a> 
component.</span></li><li><span>The&#160;<a shape="rect" 
href="metrics-component.html">Metrics Component</a> allows to capture&#160;<a 
shape="rect" href="message-history.html">Message History</a> performance 
statistics with 
the&#160;<code>MetricsMessageHistoryFactory&#160;</code></span></li><li>Reduced 
the number of mbeans enlisted in the services tree, to only include mbeans that 
has value to be managed.</li><li>The&#160;<a shape="rect" 
href="elasticsearch.html">Elasticsearch Component</a>&#160;now supports 
MultiGet operation</li><li>The&#160;<a shape="rect" 
href="throttler.html">Throttler</a> has been improved to be more performant and 
use a rolling window for time periods which gives a better flow.
 </li><li>The&#160;<code>setHeader</code> 
and&#160;<code>setExchangeProperty</code> allows to use a dynamic header key 
using the&#160;<a shape="rect" href="simple.html">Simple</a>&#160;language if 
the name of the key is a&#160;<a shape="rect" 
href="simple.html">Simple</a>&#160;language expression.</li><li>Add collate 
function to&#160;<a shape="rect" href="simple.html">Simple</a> language to make 
it easier to split a message body into sub lists of a specified size. The 
function is similar to the collate function from Groovy.</li><li>The&#160;<a 
shape="rect" href="camel-run-maven-goal.html">Camel Run Maven Goal</a> is able 
to auto detect if its a OSGi Blueprint or CDI project so end users no longer 
have to explicit configure this on the plugin.</li><li><a shape="rect" 
href="elasticsearch.html">Camel-Elasticsearch</a> now supports Multiget, 
Multisearch and exists operation</li><li><a shape="rect" 
href="git.html">Camel-Git</a> now supports Cherry-pick 
operation</li><li>Stopping the&#160;
 <code>Main</code> class from JMX will now trigger shutdown of the Main 
class/JVM also, as it does when hitting ctrl + c.</li><li>Added option to 
skipFirst to the&#160;<a shape="rect" href="tokenizer.html">Tokenizer</a> 
language to make it easy to skip the very first element, when for example 
splitting a CSV file using the&#160;<a shape="rect" 
href="splitter.html">Splitter</a> EIP.</li><li>The&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> now supports default values for query 
parameters</li><li>The&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> 
now only binds from POJO to JSon/XML if the content-type is for json or xml. 
This allows you to specify a custom content-type and omit the binding, such as 
when having binary payloads.</li><li>Exchange and Message only output id in 
their toString method to avoid outputting any message details such as sensitive 
details from message bodies.</li><li>Camel&#160;<a shape="rect" 
href="error-handler.html">Error Handler</a> no longer 
 log message body/header details when logging the <a shape="rect" 
href="message-history.html">Message History</a>. This avoids logging 
any&#160;sensitive details from message bodies.</li><li>Camel&#160;<a 
shape="rect" href="exception-clause.html">Exception Clause</a> and&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> now supports using a 
custom&#160;<code>Processor</code> to be invoked right after an exception was 
thrown using the new&#160;<strong>onExceptionOccurred</strong> 
option.</li><li><a shape="rect" href="rabbitmq.html">RabbitMQ</a> consumer more 
resilient to auto re-connect in case of connection failures</li><li>The&#160;<a 
shape="rect" href="json.html">JSON</a> <code>camel-jackson</code>&#160;can be 
used as a type converter to convert json to/from POJO and String/byte[] types, 
if enabled.</li><li>The&#160;<a shape="rect" href="sql-component.html">SQL 
Component</a> now supports loading the SQL queries from external files on the 
classpath or file system, whe
 re you can format the queries using newlines and 
indenting.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> consumer 
allows to use an idempotent repository&#160;which allows to cluster consuming 
from the same mailbox, and let the repository coordinate whether a mail message 
is valid for the consumer to process.</li><li>Added support for completion 
interval on the&#160;<a shape="rect" href="sjms-batch.html">SJMS Batch</a> 
component, which allows to trigger batch completion in a fixed scheduled 
interval.</li><li>The&#160;<a shape="rect" href="http.html">HTTP</a> 
and&#160;<a shape="rect" href="http4.html">HTTP4</a> producers now support 
the&#160;<code>disableStreamCache</code> option to allow to use the raw 
response stream as the message body instead of wrapping using&#160;<a 
shape="rect" href="stream-caching.html">Stream caching</a></li><li>The <a 
shape="rect" href="cdi.html">Camel CDI</a> component has been improved to 
better fit into the CDI programming model, cover a lar
 ger set of containers, and provide these new features:<ul><li>The Camel events 
from the <code>org.apache.camel.management.event</code> package (like 
<code>CamelContextStartedEvent</code>)&#160;can be observed as CDI 
events</li><li>The new CDI event Camel endpoint enable&#160;<span>CDI events to 
be seamlessly consumed from (respectively produced by) Camel consumers 
(respectively Camel producers)</span></li><li><span><span>CDI beans annotated 
with the&#160;</span><code>@Converter</code><span>&#160;annotation are 
automatically registered as type 
converters</span></span></li><li><span><span>The CDI Camel contexts can 
be&#160;properly customised programmatically in bean constructor 
or&#160;<code>@PostConstruct</code> lifecycle 
callback</span></span></li><li>Camel routes configured in 
<code>RouteBuilder</code> beans are added before the corresponding Camel 
contexts get started</li><li><span>CDI Camel contexts are now properly adapted 
when deployed in OSGi containers and are registered as 
 OSGi services</span></li><li>Proper support of multiple Camel contexts across 
all the features<span><br clear="none"></span></li></ul></li><li>The&#160;<a 
shape="rect" href="xslt.html">XSLT</a> component now supports Saxon's&#160;<a 
shape="rect" class="external-link" 
href="http://www.saxonica.com/html/documentation/extensibility/integratedfunctions";
 rel="nofollow" title="Follow link">integrated extension 
functions</a>.</li><li>Idempotent Repository now supports optional serialized 
headers&#160;</li></ul><p>Fixed these issues</p><ul><li>The&#160;<a 
shape="rect" href="swagger-java.html">Swagger Java</a> now parses nested types 
in the POJO model that has been annotated with the swagger api annotations to 
use in the schema api model</li><li>Fixed&#160;<a shape="rect" 
href="rest-dsl.html">Rest DSL</a> with&#160;apiContextPath fail to start if 
there are 2 ore more rest's in use.</li><li>Paho component name is not limited 
to 4 characters anymore.</li><li>Fixed&#160;<a shape="rect" href="sp
 ring-boot.html">Spring Boot</a> not starting Camel routes if running in Spring 
Cloud.</li><li>Fixed an issue with&#160;<a shape="rect" 
href="swagger-java.html">Swagger Java</a> using api-docs could lead to api-doc 
route being added multiple times</li><li>Fixed a few things missing in the 
generated swagger model when using&#160;<a shape="rect" 
href="swagger-java.html">Swagger Java</a></li><li>Fixed 
using&#160;<code>statement.xxx</code> options on the&#160;<a shape="rect" 
href="jdbc.html">JDBC</a> consumer would only be used in first 
poll.</li><li>Fixed &#160;<a shape="rect" 
href="http.html">HTTP</a>&#160;and&#160;<a shape="rect" 
href="http4.html">HTTP4</a>&#160;to keep trailing slash if provided in uri when 
calling remote HTTP service.</li><li>Fixed&#160;<a shape="rect" 
href="oncompletion.html">OnCompletion</a> to keep any caught exception stored 
as property on the&#160;<code>Exchange</code> which allows to access that 
information to know if there was an exception during routing.</li
 ><li>Fixed an issue with&#160;<a shape="rect" href="bean.html">Bean</a> 
 >component or&#160;<a shape="rect" href="simple.html">Simple</a> language with 
 >OGNL method call, would pick method with java.lang.Object type over a better 
 >suited method, when the method is 
 >overloaded.</li><li>Fixed&#160;<code>camel-blueprint</code> to wait for the 
 >bundles with the component and data-formats the&#160;<a shape="rect" 
 >href="rest-dsl.html">Rest DSL</a> has been configured to use, are available 
 >before starting Camel.</li><li>Fixed an issue with&#160;<a shape="rect" 
 >href="error-handler.html">Error Handler</a> would log any handled(true) 
 >exceptions.</li><li>Fixed a memory leak if adding/removing routes 
 >using&#160;<a shape="rect" href="idempotent-consumer.html">Idempotent 
 >Consumer</a> where the repository would not be removed from the JMX registry 
 >when routes is removed.</li><li>Fixed issue with&#160;<a shape="rect" 
 >href="spring-boot.html">Spring Boot</a> would eager shutdown some Camel 
 >resources like t
 ype converters, which spring-boot should let Camel handle the lifecycle of 
these resources.</li><li>Fixed&#160;<a shape="rect" href="cxfrs.html">CXFRS</a> 
using simple binding mode would use the content-length header from the incoming 
message in the response, instead of calculating the length based on the output 
message body.</li><li>Fixed&#160;<a shape="rect" 
href="idempotent-consumer.html">Idempotent Consumer</a> would not propagate 
exception thrown from&#160;<code>IdempotentRepository</code> to Camel's&#160;<a 
shape="rect" href="error-handler.html">Error Handler</a> such 
as&#160;<code>onException</code><code><br clear="none"></code></li></ul><h3 
id="Camel2.17.0Release-New">New <a shape="rect" 
href="enterprise-integration-patterns.html">Enterprise Integration 
Patterns</a></h3><h3 id="Camel2.17.0Release-New.1">New <a shape="rect" 
href="components.html">Components</a></h3><ul><li>camel-kubernetes - Integrates 
Camel with Kubernetes</li><li>camel-etc - Integrating Camel with etcd</li>
 <li><a shape="rect" href="aws-kinesis.html">camel-aws</a> - AWS kinesis 
streams component added</li><li><a shape="rect" 
href="aws-ddbstream.html">camel-aws</a> - DynamoDB streams component 
added</li><li><a shape="rect" href="ignite.html">camel-ignite</a> - for working 
with Apache Ignite.</li><li><a shape="rect" href="mllp.html">camel-mllp</a> 
-&#160;<span style="color: rgb(0,0,0);">for working with the HL7 MLLP protocol. 
This is an alternative to&#160;<a shape="rect" href="hl7.html">HL7</a> 
component.</span></li><li><span style="color: rgb(0,0,0);">camel-nats - for 
interacting with Nats messaging platform</span></li><li><a shape="rect" 
href="apache-spark.html">camel-spark</a> - bridges Apache Spark computations 
with Camel endpoints</li><li><a shape="rect" 
href="sql-stored-procedure.html">camel-sql</a> - Now supports calling stored 
procedures using the new <a shape="rect" 
href="sql-stored-procedure.html">sql-stored component</a>.</li><li><a 
shape="rect" href="braintree.html">camel-br
 aintree</a>&#160;- for interacting with Braintree Payments.</li><li><a 
shape="rect" href="jcache.html">camel-jcache</a> - support&#160;<a shape="rect" 
class="external-link" href="https://github.com/jsr107/jsr107spec"; 
rel="nofollow">JCache / JSR107</a> caching.</li></ul><h3 
id="Camel2.17.0Release-NewDSL">New DSL</h3><h3 
id="Camel2.17.0Release-NewAnnotations">New Annotations</h3><h3 
id="Camel2.17.0Release-NewDataFormats">New <a shape="rect" 
href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect" 
href="mime-multipart.html">MIME-Multipart</a> - mime based data 
format.</li><li><a shape="rect" href="lzf-data-format.html">LZF Data Format</a> 
- LZF based data format.&#160;</li></ul><h3 id="Camel2.17.0Release-New.2">New 
<a shape="rect" href="languages.html">Languages</a></h3><h3 
id="Camel2.17.0Release-New.3">New <a shape="rect" 
href="examples.html">Examples</a></h3><ul><li>camel-example-cdi-metrics - 
illustrates the integration between Camel, Dropwizard Metrics and CDI.</li><li>
 camel-example-cdi-properties -&#160;<span>illustrates the integration between 
Camel, DeltaSpike and CDI for configuration 
properties.</span></li><li><span>camel-example-cdi-osgi - a<span>&#160;CDI 
application using the SJMS component that can be executed inside an OSGi 
container using PAX 
CDI.</span></span></li><li><span>camel-example-cdi-rest-servlet 
-&#160;<span>illustrates the Camel REST DSL being used in a Web application 
that uses CDI as dependency injection 
framework</span></span></li><li>camel-example-spring-boot-metrics - showing a 
Camel spring-boot application that report metrics to Graphite. Requires 
Graphite running on your network.</li><li>camel-example-widget-gadget-cdi - The 
Widget and Gadget use-case from the EIP book implemented in Java with CDI 
dependency Injection.</li><li>camel-example-widget-gadget-java - The Widget and 
Gadget use-case from the EIP book implemented in plain old Java Main without 
any kind of <em>application server</em>.</li><li>camel-example-widge
 t-gadget-xml - The Widget and Gadget use-case from the EIP book implemented in 
Spring XML without any Java code or any kind of&#160;<em>application 
server</em>.</li></ul><h3 id="Camel2.17.0Release-New.4">New <a shape="rect" 
href="tutorials.html">Tutorials</a></h3><h2 
id="Camel2.17.0Release-APIbreaking">API breaking</h2><ul><li>As part of the <a 
shape="rect" href="cdi.html">Camel CDI</a> component refactoring:<ul><li>The 
<code>@ContextName</code>&#160;qualifier does not have a default empty value 
anymore as it is irrelevant</li><li>The&#160;CdiPropertiesComponent&#160;class 
has been removed, the standard&#160;PropertiesComponent&#160;can be used 
instead</li></ul></li></ul><h2 id="Camel2.17.0Release-KnownIssues">Known 
Issues</h2><h2 id="Camel2.17.0Release-Dependencyupgrades">Dependency 
upgrades</h2><ul><li>Apache Cassandra from 2.1.8 to 2.2.2</li><li>Apache 
Deltaspike from 1.5.1 to 1.5.2</li><li>Apache Gora from 0.6 to 
0.6.1</li><li>Apache Jackrabbit from 2.11.0 to 2.11.3</li><li>Apac
 he Kafka from 0.8.2.2 to 0.9.0.0</li><li>Apache Lucene from 4.10.4 to 
5.2.1</li><li>Apache Mina from 2.0.9 to 2.0.10</li><li>Apache OpenEjb from 
4.7.2 to 4.7.3</li><li>Apache Solr from 4.10.4 to 5.2.1</li><li>Aws SDK Java to 
version 1.10.37</li><li>Atmosphere from <span 
class="blob-code-inner">2.4.0</span> to 2.4.1.4</li><li>Cassandra driver from 
2.1.8 to 2.1.9</li><li>Cassandra-unit from 2.1.9.2 to 2.2.2.1</li><li>Cglib 
from 3.1 to 3.2.0</li><li>Classmate from 1.3.0 to 1.3.1</li><li>Chunk from 
3.0.1 to 3.1.2</li><li>Drools from 6.2.0.Final to 6.3.0.Final</li><li>EHCache 
from 2.10.0 to 2.10.1</li><li>Elasticsearch from 1.7.3 to 
2.0.0</li><li>Embedded Mongodb from 1.50.0 to 1.50.2</li><li>Facebook4j from 
2.3.1 to 2.4.2</li><li>GAE from 1.9.26 to 1.9.32</li><li>Google Gson from 2.4 
to 2.61</li><li>Hazelcast from 3.5.2 to 3.6</li><li>Infinispan from 8.0.1.Final 
to 8.1.2.Final</li><li>Jackson from 2.6.3 to 2.7.1</li><li>Jboss Xnio from 
3.3.1.Final to 3.3.4.Final</li><li>Jboss Weld from 
 2.3.0.Final to 2.3.3.Final</li><li>Jbpm from 6.2.0.Final to 
6.3.0.Final</li><li>Jgit from <span class="blob-code-inner">4.1.<span class="x 
x-first x-last">0.201509280440</span>-r</span> to <span 
class="blob-code-inner">4.1.<span class="x x-first 
x-last">1.201511131810</span>-r</span></li><li>Joda-time from 2.8.2 to 
2.9.1</li><li>Json-path from 2.0.0 to 2.1.0</li><li>Jt400 from 8.6 to 
8.7</li><li>Kie from 6.2.0.Final to 6.3.0.Final</li><li>Maven Exec plugin from 
1.2.1 to 1.4.0</li><li>Mongodb Java driver from 3.0.4 to 3.2.0</li><li>Mvel 
from 2.2.6.Final to 2.2.7.Final</li><li>Ognl from 3.1 to 3.1.1</li><li>Olingo 
from 2.0.4 to 2.0.5</li><li>Optaplanner from 6.2.0.Final to 
6.3.0.Final</li><li>Pax-exam from 4.6.0 to 4.8.0</li><li>Spring 4.1.x to 
4.2.x</li><li>Spring-Boot 1.2.x to 1.3.x</li><li>Spring Integration 2.x to 
4.x</li><li>slf4j-api 1.6.x to 1.7.x</li><li>Undertow from 1.3.3.Final to 
1.3.7.Final</li><li>Vertx from 3.1.0 to 3.2.0</li><li>Zookeeper from 3.4.6 to 
3.4.7</li></ul><h
 2 id="Camel2.17.0Release-Importantchangestoconsiderwhenupgrading">Important 
changes to consider when upgrading</h2><ul><li><strong>This is the last release 
that will support Java 1.7. Releases after this is expected to require Java 
1.8+.&#160;</strong></li><li>Any custom component that supports suspension in 
doSuspend/doResume should implement the new&#160;<code>Suspendable</code> 
marker interface, so Camel knows there is custom logic for suspension in the 
component.</li><li>Exchange and Message only output id in their toString method 
to avoid outputting any message details such as sensitive details from message 
bodies.</li><li>Removed camel-hbase as Karaf feature as it did not really work 
well in OSGi</li><li>Upgraded camel-hbase to Hadoop 2.x and HBase 
1.1.x</li><li>camel-infinispan requires Java 8.</li><li>camel-mustache requires 
Java 8.</li><li>Support for Spring 4.0.x is deprecated. Support for Spring 3.x 
is being <strong>removed</strong> in the next release.</li><li>Support fo
 r Karaf 2.x and 3.x is deprecated. And removed in next release, where Karaf 
4.x onwards is only supported.</li><li>camel-jetty8 is deprecated and being 
removed in next release.</li><li>Moved some Camel tooling related dependencies 
(such as maven/plexus) from the Camel Parent BOM to the tooling BOM (to have 
them separated).</li><li>camel-amqp do not support 0.9 
anymore.&#160;</li><li>camel-spring-integration feature has been removed from 
the Camel karaf.</li><li>The&#160;<a shape="rect" href="mail.html">Mail</a> 
component now requires to configure to, cc, and bcc using lower case keys, eg 
to=f...@bar.com, instead of&#160;<a shape="rect" class="external-link" 
href="mailto:To=f...@bar.com"; rel="nofollow">To=f...@bar.com</a>&#160;as 
previously.</li><li>The&#160;<a shape="rect" 
href="file2.html">File</a>&#160;consumer no longer probe the file content by 
default. See the option&#160;<code>probeContentType</code> for more 
details.</li><li>If using&#160;<a shape="rect" href="bean.html">Bean</a
 >&#160;or&#160;<a shape="rect" href="class.html">Class</a>&#160;component and 
 >specifying additional parameters in the endpoint uri to configure on the 
 >bean, then these options should now be prefixed with bean., eg 
 ><code>foo=123</code>&#160;is now 
 ><code>bean.foo=123</code>.</li><li>The&#160;<a shape="rect" 
 >href="twitter.html">Twitter</a> delay option is changed from seconds to milli 
 >seconds by default, eg 10 should be 10000 to indicate 10 seconds. This is 
 >aligned how other components with delay option behaves.&#160;</li><li>The 
 >options&#160;<code>attributeNames</code> 
 >and&#160;<code>messageAttributeNames</code> on&#160;<a shape="rect" 
 >href="aws-sqs.html">AWS-SQS</a> is changed to a string type where you can 
 >separate multiple values using comma. Before the type was a Collection which 
 >was much harder to configure in the Camel uris.</li><li>The&#160;<a 
 >shape="rect" href="hbase.html">hbase</a> component now require row mapping 
 >from the endpoint uri to be prefixed with <code style="line-h
 eight: 1.42857;">row.</code>&#160;as prefix.<br clear="none">Before: 
<code>family=info&amp;qualifier=firstName&amp;family2=birthdate&amp;qualifier2=year</code>.&#160;After:&#160;<code>row.family=info&amp;row.qualifier=firstName&amp;row.family2=birthdate&amp;row.qualifier2=year</code>.</li><li>As
 part of the <a shape="rect" href="cdi.html">Camel CDI</a> component 
refactoring,&#160;<em>DeltaSpike</em> is not used anymore for the sourcing of 
the configuration properties. This new version of the component is agnostic to 
any configuration sourcing mechanism and delegates that concern to the 
application so that it can declare a 
custom&#160;<code>PropertiesComponent</code>&#160;bean whose sourcing is 
tailored to its need. <em>DeltaSpike</em> can still be used by the application 
by declaring a&#160;<code>PropertiesComponent</code>&#160;bean configured with 
a&#160;<code>PropertiesParser</code>&#160;relying on <em>DeltaSpike</em>. See 
the&#160;<code>camel-example-cdi-properties</code>&#160;ex
 ample for more details.</li></ul><h2 
id="Camel2.17.0Release-GettingtheDistributions">Getting the 
Distributions</h2><h3 id="Camel2.17.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/x.y.x/apache-camel-x.y.x.zip";>apache-camel-x.y.x.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/x.y.x/apache-camel-x.y.x.zip.asc";>apache-camel-x.y.x.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/x.y.x/apache-camel-x.y.x.tar.gz";>apache-camel-x.y.x.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/x.y.x/apache-camel-x.y.x.tar.gz.asc";>apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div
 class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The above URLs use 
redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The above URLs use the Apache 
Mirror system to redirect you to a suitable mirror for your download. Some 
users have experienced i
 ssues with some versions of browsers (e.g. some Safari browsers). If the 
download doesn't seem to work for you from the above URL then try using <a 
shape="rect" class="external-link" href="http://www.mozilla.com/en-US/firefox/"; 
rel="nofollow">FireFox</a></p></div></div><h3 
id="Camel2.17.0Release-SourceDistributions">Source 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>Source for Windows</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/x.y.x/apache-camel-x.y.x-src.zip";>apache-camel-x.y.x-src.zip</a></p></td><td
 colspan="1" rowspan="1" class="con
 fluenceTd"><p><a shape="rect" class="external-link" 
href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip.asc";>apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><div
 class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Source for Unix/Linux/Cygwin</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/x.y.x/apache-camel-x.y.x-src.tar.gz";>apache-camel-x.y.x-src.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/x.y.x/apache-camel-x.y.x-src.tar.gz.asc";>apache-camel-x.y.x-src.tar.gz.asc</a></p></td></tr></tbody></table></div><h3
 id="Camel2.17.0Release-GettingtheBinariesusingMaven2">Getting the Binaries 
using Maven 2</h3><p>To use this release in your maven project, 
 the proper dependency configuration that you should use in your <a 
shape="rect" class="external-link" 
href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html";>Maven
 POM</a> is:</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-core&lt;/artifactId&gt;

Modified: websites/production/camel/content/component-list.html
==============================================================================
--- websites/production/camel/content/component-list.html (original)
+++ websites/production/camel/content/component-list.html Tue Feb 23 12:21:03 
2016
@@ -330,7 +330,9 @@ disruptor-vm:someName[?&lt;option&gt;]
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sending 
and receiving messages through <a shape="rect" class="external-link" 
href="http://java.sun.com/products/jini/2.1/doc/specs/html/js-spec.html"; 
rel="nofollow">JavaSpace</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="jbpm.html">jBPM</a> / 
camel-jbpm</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[jbpm:hostName[:port][/resourceUri][?options]
 ]]></script>
-</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sending 
messages through kie-remote-client API to jBPM.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jclouds.html">jclouds</a> / camel-jclouds</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>Sending 
messages through kie-remote-client API to jBPM.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jcache.html">jcache</a> / camel-jcache</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[jcache:cacheName[?options]]]></script>
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><span>The 
JCache component facilitates creation of caching endpoints and processors using 
</span><a shape="rect" class="external-link" 
href="https://github.com/jsr107/jsr107spec"; rel="nofollow">JCache / 
jsr107</a><span> as the cache implementation.</span></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jclouds.html">jclouds</a> / camel-jclouds</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[jclouds:&lt;blobstore|compute&gt;:[provider 
id][?options]
 ]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For 
interacting with cloud compute &amp; blobstore service via <a shape="rect" 
class="external-link" href="http://www.jclouds.org"; 
rel="nofollow">jclouds</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="jcr.html">JCR</a> / 
camel-jcr</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">

Modified: websites/production/camel/content/component.html
==============================================================================
--- websites/production/camel/content/component.html (original)
+++ websites/production/camel/content/component.html Tue Feb 23 12:21:03 2016
@@ -331,7 +331,9 @@ disruptor-vm:someName[?&lt;option&gt;]
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sending 
and receiving messages through <a shape="rect" class="external-link" 
href="http://java.sun.com/products/jini/2.1/doc/specs/html/js-spec.html"; 
rel="nofollow">JavaSpace</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="jbpm.html">jBPM</a> / 
camel-jbpm</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[jbpm:hostName[:port][/resourceUri][?options]
 ]]></script>
-</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sending 
messages through kie-remote-client API to jBPM.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jclouds.html">jclouds</a> / camel-jclouds</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>Sending 
messages through kie-remote-client API to jBPM.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jcache.html">jcache</a> / camel-jcache</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[jcache:cacheName[?options]]]></script>
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><span>The 
JCache component facilitates creation of caching endpoints and processors using 
</span><a shape="rect" class="external-link" 
href="https://github.com/jsr107/jsr107spec"; rel="nofollow">JCache / 
jsr107</a><span> as the cache implementation.</span></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jclouds.html">jclouds</a> / camel-jclouds</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[jclouds:&lt;blobstore|compute&gt;:[provider 
id][?options]
 ]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For 
interacting with cloud compute &amp; blobstore service via <a shape="rect" 
class="external-link" href="http://www.jclouds.org"; 
rel="nofollow">jclouds</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="jcr.html">JCR</a> / 
camel-jcr</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">

Modified: websites/production/camel/content/components.html
==============================================================================
--- websites/production/camel/content/components.html (original)
+++ websites/production/camel/content/components.html Tue Feb 23 12:21:03 2016
@@ -331,7 +331,9 @@ disruptor-vm:someName[?&lt;option&gt;]
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sending 
and receiving messages through <a shape="rect" class="external-link" 
href="http://java.sun.com/products/jini/2.1/doc/specs/html/js-spec.html"; 
rel="nofollow">JavaSpace</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="jbpm.html">jBPM</a> / 
camel-jbpm</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[jbpm:hostName[:port][/resourceUri][?options]
 ]]></script>
-</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sending 
messages through kie-remote-client API to jBPM.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jclouds.html">jclouds</a> / camel-jclouds</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>Sending 
messages through kie-remote-client API to jBPM.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jcache.html">jcache</a> / camel-jcache</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[jcache:cacheName[?options]]]></script>
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><span>The 
JCache component facilitates creation of caching endpoints and processors using 
</span><a shape="rect" class="external-link" 
href="https://github.com/jsr107/jsr107spec"; rel="nofollow">JCache / 
jsr107</a><span> as the cache implementation.</span></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" 
href="jclouds.html">jclouds</a> / camel-jclouds</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[jclouds:&lt;blobstore|compute&gt;:[provider 
id][?options]
 ]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For 
interacting with cloud compute &amp; blobstore service via <a shape="rect" 
class="external-link" href="http://www.jclouds.org"; 
rel="nofollow">jclouds</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><a shape="rect" href="jcr.html">JCR</a> / 
camel-jcr</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">

Modified: websites/production/camel/content/idempotent-consumer.html
==============================================================================
--- websites/production/camel/content/idempotent-consumer.html (original)
+++ websites/production/camel/content/idempotent-consumer.html Tue Feb 23 
12:21:03 2016
@@ -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><tr><td colspan="1" rowspan="1" 
class="confluenceTd">completionEager</td><td colspan="1" rowspan="1" 
class="confluenceTd">false</td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.16:</strong> Sets whether to complete 
the idempotent consumer eager or when the exchange is done.</p><p>If this 
option is true to complete eager, then 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><p>If this option is 
false (default) to not complete eager, then the i
 dempotent consumer will complete when the exchange is done being routed. 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></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><li><p><strong><a 
shape="rect" 
href="jcache.html">JCacheIdempotentRepository</a>&#160;(<strong>Available as of 
Camel 2.17.0)</strong></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 b
 efore 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">completionEager</td><td colspan="1" rowspan="1" 
class="confluenceTd">false</td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.16:</strong> Sets whether to complete 
the idempotent consumer eager or when the exchange is done.</p><p>If this 
option is true to complete eager, then 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><p>If this option is false (default) to not complete eager, then the 
idempotent consumer will complete when the exchange is done being routed. 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></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="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
     public void configure() {
@@ -99,14 +99,14 @@ RouteBuilder builder = new RouteBuilder(
     }
 };
 ]]></script>
-</div></div><p>The above <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java";>example</a>
 will use an in-memory based <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/MessageIdRepository.html";>MessageIdRepository</a>
 which can easily run out of memory and doesn't work in a clustered 
environment. So you might prefer to use the JPA based implementation which uses 
a database to store the message IDs which have been processed</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div>The above <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/RouteBuilderTest.java";>example</a>
 will use an in-memory based <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/idempotent/MessageIdRepository.html";>MessageIdRepository</a>
 which can easily run out of memory and doesn't work in a clustered 
environment. So you might prefer to use the JPA based implementation which uses 
a database to store the message IDs which have been processed<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;direct:start&quot;).idempotentConsumer(
         header(&quot;messageId&quot;),
         jpaMessageIdRepository(lookup(EntityManagerFactory.class), 
PROCESSOR_NAME)
 ).to(&quot;mock:result&quot;);
 ]]></script>
-</div></div><p>In the above <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaIdempotentConsumerTest.java";>example</a>
 we are using the header <strong>messageId</strong> to filter out duplicates 
and using the collection <strong>myProcessorName</strong> to indicate the 
Message ID Repository to use. This name is important as you could process the 
same message by many different processors; so each may require its own logical 
Message ID Repository.</p><p>For further examples of this pattern in use you 
could look at the <a shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/IdempotentConsumerTest.java?view=markup";>junit
 test case</a></p><h3 id="IdempotentConsumer-SpringXMLexample">Spring XML 
example</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></div>In the above <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-jpa/src/test/java/org/apache/camel/processor/jpa/JpaIdempotentConsumerTest.java";>example</a>
 we are using the header <strong>messageId</strong> to filter out duplicates 
and using the collection <strong>myProcessorName</strong> to indicate the 
Message ID Repository to use. This name is important as you could process the 
same message by many different processors; so each may require its own logical 
Message ID Repository.<p>For further examples of this pattern in use you could 
look at the <a shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/IdempotentConsumerTest.java?view=markup";>junit
 test case</a></p><h3 id="IdempotentConsumer-SpringXMLexample">Spring XML 
example</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="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;!-- repository for the idempotent consumer --&gt;
 &lt;bean id=&quot;myRepo&quot; 
class=&quot;org.apache.camel.processor.idempotent.MemoryIdempotentRepository&quot;/&gt;
@@ -136,7 +136,7 @@ from(&quot;direct:start&quot;)
     // and here we process only new messages (no duplicates)
     .to(&quot;mock:result&quot;);
 ]]></script>
-</div></div><p>The sample example in XML DSL would be:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Filter duplicate messages</b></div><div 
class="codeContent panelContent pdl">
+</div></div>The sample example in XML DSL would be:<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Filter duplicate messages</b></div><div 
class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 &lt;!-- idempotent repository, just use a memory based for testing --&gt;


Reply via email to