Author: buildbot
Date: Sat Feb  4 01:20:14 2017
New Revision: 1006186

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/dead-letter-channel.html
    websites/production/camel/content/error-handler.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 Sat Feb  4 01:20:14 
2017
@@ -3930,11 +3930,11 @@ The tutorial has been designed in two pa
 While not actual tutorials you might find working through the source of the 
various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
 
 <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring 
Remoting with JMS</h2><p>&#160;</p><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Thanks</p><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This tutorial was kindly donated 
to Apache Camel by Martin Gilday.</p></div></div><h2 
id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the 
reader through the stages of creating a project which uses Camel to facilitate 
the routing of messages from a JMS queue to a <a shape="rect" 
class="external-link" href="http://www.springramework.org"; 
rel="nofollow">Spring</a> service. The route works in a synchronous fashion 
returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1485983947663 {padding: 0px;}
-div.rbtoc1485983947663 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1485983947663 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1486171101204 {padding: 0px;}
+div.rbtoc1486171101204 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1486171101204 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1485983947663">
+/*]]>*/</style></p><div class="toc-macro rbtoc1486171101204">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring 
Remoting with JMS</a></li><li><a shape="rect" 
href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" 
href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" 
href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" 
href="#BookInOnePage-About">About</a></li><li><a shape="rect" 
href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with 
Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the 
Server</a>
@@ -6049,11 +6049,11 @@ So we completed the last piece in the pi
 <p>This example has been removed from <strong>Camel 2.9</strong> onwards. 
Apache Axis 1.4 is a very old and unsupported framework. We encourage users to 
use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1485983948107 {padding: 0px;}
-div.rbtoc1485983948107 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1485983948107 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1486171101652 {padding: 0px;}
+div.rbtoc1486171101652 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1486171101652 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1485983948107">
+/*]]>*/</style><div class="toc-macro rbtoc1486171101652">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 
1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" 
href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" 
href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" 
href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to 
run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" 
href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" 
href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a 
shape="rect" href="#BookInOnePage-RunningtheExample">Running the 
Example</a></li></ul>
@@ -11834,49 +11834,49 @@ from(&quot;direct:start&quot;)
   <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"> &amp;lt;camelContext 
errorHandlerRef=&amp;quot;errorHandler&amp;quot; 
xmlns=&amp;quot;http://camel.apache.org/schema/spring&amp;quot;&amp;gt; 
&amp;lt;route&amp;gt; &amp;lt;from uri=&amp;quot;direct:a&amp;quot;/&amp;gt; 
&amp;lt;multicast&amp;gt; &amp;lt;to uri=&amp;quot;direct:b&amp;quot;/&amp;gt; 
&amp;lt;to uri=&amp;quot;direct:c&amp;quot;/&amp;gt; &amp;lt;to 
uri=&amp;quot;direct:d&amp;quot;/&amp;gt; &amp;lt;/multicast&amp;gt; 
&amp;lt;/route&amp;gt; &amp;lt;/camelContext&amp;gt; </script> 
  </div>
 </div><h4 id="BookInOnePage-UsingThisPattern.7">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><h2 id="BookInOnePage-DeadLetterChannel">Dead Letter 
Channel</h2><p>Camel supports the <a shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/DeadLetterChannel.html"; 
rel="nofollow">Dead Letter Channel</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> using the <a 
shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/
 processor/DeadLetterChannel.html">DeadLetterChannel</a> processor which is an 
<a shape="rect" href="error-handler.html">Error Handler</a>.</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://www.enterpriseintegrationpatterns.com/img/DeadLetterChannelSolution.gif";
 
data-image-src="http://www.enterpriseintegrationpatterns.com/img/DeadLetterChannelSolution.gif";></span></p><div
 class="confluence-information-macro confluence-information-macro-tip">
- <p class="title">Difference between Dead Letter Channel and Default Error 
Handler</p>
+ <p class="title">Differences Between The DeadLetterChannel And The 
DefaultErrorHandler</p>
  <span class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span>
  <div class="confluence-information-macro-body">
-  <p>The Default Error Handler does very little: it ends the Exchange 
immediately and propagates the thrown Exception back to the caller.</p>
-  <p>The Dead Letter Channel lets you control behaviors including redelivery, 
whether to propagate the thrown Exception to the caller (the 
<strong>handled</strong> option), and where the (failed) Exchange should now be 
routed to.</p>
-  <p>The Dead Letter Channel is also by default configured to not be verbose 
in the logs, so when a message is handled and moved to the dead letter 
endpoint, then there is nothing logged. If you want some level of logging you 
can use the various options on the redelivery policy / dead letter channel to 
configure this. For example if you want the message history then set 
logExhaustedMessageHistory=true (and logHandled=true for Camel 2.15.x or 
older).</p>
-  <p>When the DeadLetterChannel moves a message to the dead letter endpoint, 
any new Exception thrown is by default handled by the dead letter channel as 
well. This ensures that the DeadLetterChannel will always succeed. From 
<strong>Camel 2.15</strong> onwards this behavior can be changed by setting the 
option deadLetterHandleNewException=false. Then if a new Exception is thrown, 
then the dead letter channel will fail and propagate back that new Exception 
(which is the behavior of the default error handler). When a new Exception 
occurs then the dead letter channel logs this at WARN level. This can be turned 
off by setting logNewException=false.</p>
+  <p>The&#160;<strong><code>DefaultErrorHandler</code></strong> does very 
little: it ends the Exchange immediately and propagates the thrown Exception 
back to the caller.</p>
+  <p>The&#160;<strong><code>DeadLetterChannel</code></strong> lets you control 
behaviors including redelivery, whether to propagate the thrown Exception to 
the caller (the&#160;<strong><code>handled</code></strong> option), and where 
the (failed) Exchange should now be routed to.</p>
+  <p>The&#160;<strong><code>DeadLetterChannel</code></strong> is also by 
default configured to not be verbose in the logs, so when a message is handled 
and moved to the dead letter endpoint, then there is nothing logged. If you 
want some level of logging you can use the various options on the redelivery 
policy / dead letter channel to configure this. For example if you want the 
message history then 
set&#160;<strong><code>logExhaustedMessageHistory=true</code></strong> 
(and&#160;<strong><code>logHandled=true</code></strong> for <strong>Camel 
2.15.x</strong> or older).</p>
+  <p>When the&#160;<strong><code>DeadLetterChannel</code></strong> moves a 
message to the dead letter endpoint, any new Exception thrown is by default 
handled by the dead letter channel as well. This ensures that 
the&#160;<strong><code>DeadLetterChannel</code></strong> will always succeed. 
From <strong>Camel 2.15</strong>: this behavior can be changed by setting the 
option <strong><code>deadLetterHandleNewException=false</code></strong>. Then 
if a new Exception is thrown, then the dead letter channel will fail and 
propagate back that new Exception (which is the behavior of the default error 
handler). When a new Exception occurs then the dead letter channel logs this 
at&#160;<strong><code>WARN</code></strong> level. This can be turned off by 
setting <strong><code>logNewException=false</code></strong>.</p>
  </div>
-</div><h3 id="BookInOnePage-Redelivery">Redelivery</h3><p>It is common for a 
temporary outage or database deadlock to cause a message to fail to process; 
but the chances are if its tried a few more times with some time delay then it 
will complete fine. So we typically wish to use some kind of redelivery policy 
to decide how many times to try redeliver a message and how long to wait before 
redelivery attempts.</p><p>The <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/RedeliveryPolicy.html";>RedeliveryPolicy</a>
 defines how the message is to be redelivered. You can customize things 
like</p><ul><li>how many times a message is attempted to be redelivered before 
it is considered a failure and sent to the dead letter channel</li><li>the 
initial redelivery timeout</li><li>whether or not exponential backoff is used 
(i.e. the time between retries increases using a backoff 
multiplier)</li><li>whether to use collisi
 on avoidance to add some randomness to the timings</li><li>delay pattern (see 
below for details)</li><li><strong>Camel 2.11:</strong> whether to allow 
redelivery during stopping/shutdown</li></ul><p>Once all attempts at 
redelivering the message fails then the message is forwarded to the dead letter 
queue.</p><h3 
id="BookInOnePage-AboutmovingExchangetodeadletterqueueandusinghandled">About 
moving Exchange to dead letter queue and using 
handled</h3><p><strong>Handled</strong> on <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a></p><p>When all attempts 
of redelivery have failed the <a shape="rect" href="exchange.html">Exchange</a> 
is moved to the dead letter queue (the dead letter endpoint). The exchange is 
then complete and from the client point of view it was processed. As such the 
<a shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> have 
handled the <a shape="rect" href="exchange.html">Exchange</a>.</p><p>For 
instance configuring the dead lett
 er channel as:</p><p><strong>Using the <a shape="rect" 
href="fluent-builders.html">Fluent Builders</a></strong></p><div class="code 
panel pdl" style="border-width: 1px;">
+</div><h3 id="BookInOnePage-Redelivery">Redelivery</h3><p>It is common for a 
temporary outage or database deadlock to cause a message to fail to process; 
but the chances are if its tried a few more times with some time delay then it 
will complete fine. So we typically wish to use some kind of redelivery policy 
to decide how many times to try redeliver a message and how long to wait before 
redelivery attempts.</p><p>The <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/RedeliveryPolicy.html";>RedeliveryPolicy</a>
 defines how the message is to be redelivered. You can customize things 
like</p><ul><li>The number of times a message is attempted to be redelivered 
before it is considered a failure and sent to the dead letter 
channel.</li><li>The initial redelivery timeout.</li><li>Whether or not 
exponential backoff is used, i.e., the time between retries increases using a 
backoff multiplier.</li><li>Whether to use
  collision avoidance to add some randomness to the timings.</li><li>Delay 
pattern (see below for details).</li><li><strong>Camel 2.11:</strong> Whether 
to allow redelivery during stopping/shutdown.</li></ul><p>Once all attempts at 
redelivering the message fails then the message is forwarded to the dead letter 
queue.</p><h3 
id="BookInOnePage-AboutMovingExchangetoDeadLetterQueueandUsinghandled()">About 
Moving Exchange to Dead Letter Queue and 
Using&#160;<strong><code>handled()</code></strong></h3><p><strong><code>handled()</code></strong>
 on <a shape="rect" href="dead-letter-channel.html">Dead Letter 
Channel</a></p><p>When all attempts of redelivery have failed the <a 
shape="rect" href="exchange.html">Exchange</a> is moved to the dead letter 
queue (the dead letter endpoint). The exchange is then complete and from the 
client point of view it was processed. As such the <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> have handled the <a 
shape="rect" href="exchange
 .html">Exchange</a>.</p><p>For instance configuring the dead letter channel 
as:</p><p><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent 
Builders</a></strong></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">errorHandler(deadLetterChannel(&amp;quot;jms:queue:dead&amp;quot;)
 .maximumRedeliveries(3).redeliveryDelay(5000)); </script> 
  </div>
 </div><p><strong>Using the <a shape="rect" 
href="spring-xml-extensions.html">Spring XML Extensions</a></strong></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">&amp;lt;route 
errorHandlerRef=&amp;quot;myDeadLetterErrorHandler&amp;quot;&amp;gt; ... 
&amp;lt;/route&amp;gt; &amp;lt;bean 
id=&amp;quot;myDeadLetterErrorHandler&amp;quot; 
class=&amp;quot;org.apache.camel.builder.DeadLetterChannelBuilder&amp;quot;&amp;gt;
 &amp;lt;property name=&amp;quot;deadLetterUri&amp;quot; 
value=&amp;quot;jms:queue:dead&amp;quot;/&amp;gt; &amp;lt;property 
name=&amp;quot;redeliveryPolicy&amp;quot; 
ref=&amp;quot;myRedeliveryPolicyConfig&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; 
&amp;lt;bean id=&amp;quot;myRedeliveryPolicyConfig&amp;quot; 
class=&amp;quot;org.apache.camel.processor.RedeliveryPolicy&amp;quot;&amp;gt; 
&amp;lt;property name=&amp;quot;maximumRedeliveries&amp;quot; 
value=&amp;quot;3&amp;quot;/&amp;gt; &amp;lt;property 
name=&amp;quot;redeliveryDelay&amp;quot; 
value=&amp;quot;5000&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; </script> 
+  <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter">&amp;lt;route 
errorHandlerRef=&amp;quot;myDeadLetterErrorHandler&amp;quot;&amp;gt; 
&amp;lt;!-- ... --&amp;gt; &amp;lt;/route&amp;gt; &amp;lt;bean 
id=&amp;quot;myDeadLetterErrorHandler&amp;quot; 
class=&amp;quot;org.apache.camel.builder.DeadLetterChannelBuilder&amp;quot;&amp;gt;
 &amp;lt;property name=&amp;quot;deadLetterUri&amp;quot; 
value=&amp;quot;jms:queue:dead&amp;quot;/&amp;gt; &amp;lt;property 
name=&amp;quot;redeliveryPolicy&amp;quot; 
ref=&amp;quot;myRedeliveryPolicyConfig&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; 
&amp;lt;bean id=&amp;quot;myRedeliveryPolicyConfig&amp;quot; 
class=&amp;quot;org.apache.camel.processor.RedeliveryPolicy&amp;quot;&amp;gt; 
&amp;lt;property name=&amp;quot;maximumRedeliveries&amp;quot; 
value=&amp;quot;3&amp;quot;/&amp;gt; &amp;lt;property 
name=&amp;quot;redeliveryDelay&amp;quot; 
value=&amp;quot;5000&amp;quot;/&amp;gt; &amp;lt;/bean&amp;gt; </script> 
  </div>
-</div><p>The <a shape="rect" href="dead-letter-channel.html">Dead Letter 
Channel</a> above will clear the caused exception 
(<code>setException(null)</code>), by moving the caused exception to a property 
on the <a shape="rect" href="exchange.html">Exchange</a>, with the key 
<code>Exchange.EXCEPTION_CAUGHT</code>. Then the <a shape="rect" 
href="exchange.html">Exchange</a> is moved to the <code>"jms:queue:dead"</code> 
destination and the client will not notice the failure.</p><h3 
id="BookInOnePage-AboutmovingExchangetodeadletterqueueandusingtheoriginalmessage">About
 moving Exchange to dead letter queue and using the original message</h3><p>The 
option <strong>useOriginalMessage</strong> is used for routing the original 
input message instead of the current message that potentially is modified 
during routing.</p><p>For instance if you have this route:</p><div class="code 
panel pdl" style="border-width: 1px;">
+</div><p>The <a shape="rect" href="dead-letter-channel.html">Dead Letter 
Channel</a> above will clear the caused exception 
<strong><code>setException(null)</code></strong>, by moving the caused 
exception to a property on the <a shape="rect" 
href="exchange.html">Exchange</a>, with the key 
<strong><code>Exchange.EXCEPTION_CAUGHT</code></strong>. Then the <a 
shape="rect" href="exchange.html">Exchange</a> is moved to the 
<strong><code>jms:queue:dead</code></strong> destination and the client will 
not notice the failure.</p><h3 
id="BookInOnePage-AboutMovingExchangetoDeadLetterQueueandUsingtheOriginalMessage">About
 Moving Exchange to Dead Letter Queue and Using the Original Message</h3><p>The 
option <strong><code>useOriginalMessage</code></strong> is used for routing the 
original input message instead of the current message that potentially is 
modified during routing.</p><p>For instance if you have this route:</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"> from(&amp;quot;jms:queue:order:input&amp;quot;) 
.to(&amp;quot;bean:validateOrder&amp;quot;) 
.to(&amp;quot;bean:transformOrder&amp;quot;) 
.to(&amp;quot;bean:handleOrder&amp;quot;); </script> 
  </div>
-</div><p>The route listen for JMS messages and validates, transforms and 
handle it. During this the <a shape="rect" href="exchange.html">Exchange</a> 
payload is transformed/modified. So in case something goes wrong and we want to 
move the message to another JMS destination, then we can configure our <a 
shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> with the 
<strong>useOriginalMessage</strong> option. But when we move the <a 
shape="rect" href="exchange.html">Exchange</a> to this destination we do not 
know in which state the message is in. Did the error happen in before the 
transformOrder or after? So to be sure we want to move the original input 
message we received from <code>jms:queue:order:input</code>. So we can do this 
by enabling the <strong>useOriginalMessage</strong> option as shown 
below:</p><div class="code panel pdl" style="border-width: 1px;">
+</div><p>The route listen for JMS messages and validates, transforms and 
handle it. During this the <a shape="rect" href="exchange.html">Exchange</a> 
payload is transformed/modified. So in case something goes wrong and we want to 
move the message to another JMS destination, then we can configure our <a 
shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> with 
the&#160;<strong><code>useOriginalMessage</code></strong> option. But when we 
move the <a shape="rect" href="exchange.html">Exchange</a> to this destination 
we do not know in which state the message is in. Did the error happen in before 
the&#160;<strong><code>transformOrder</code></strong> or after? So to be sure 
we want to move the original input message we received from 
<strong><code>jms:queue:order:input</code></strong>. So we can do this by 
enabling the&#160;<strong><code>useOriginalMessage</code></strong> option as 
shown below:</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"> // will use original body 
errorHandler(deadLetterChannel(&amp;quot;jms:queue:dead&amp;quot;) 
.useOriginalMessage().maximumRedeliveries(5).redeliverDelay(5000); </script> 
+  <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter">// will use original body 
errorHandler(deadLetterChannel(&amp;quot;jms:queue:dead&amp;quot;) 
.useOriginalMessage() .maximumRedeliveries(5) .redeliverDelay(5000); </script> 
  </div>
-</div><p>Then the messages routed to the <code>jms:queue:dead</code> is the 
original input. If we want to manually retry we can move the JMS message from 
the failed to the input queue, with no problem as the message is the same as 
the original we received.</p><h3 
id="BookInOnePage-OnRedelivery">OnRedelivery</h3><p>When <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> is doing redeliver its 
possible to configure a <a shape="rect" href="processor.html">Processor</a> 
that is executed just <strong>before</strong> every redelivery attempt. This 
can be used for the situations where you need to alter the message before its 
redelivered. See below for sample.</p><div class="confluence-information-macro 
confluence-information-macro-tip">
+</div><p>Then the messages routed to the 
<strong><code>jms:queue:dead</code></strong> is the original input. If we want 
to manually retry we can move the JMS message from the failed to the input 
queue, with no problem as the message is the same as the original we 
received.</p><h3 id="BookInOnePage-OnRedelivery">OnRedelivery</h3><p>When <a 
shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> is doing 
redeliver its possible to configure a <a shape="rect" 
href="processor.html">Processor</a> that is executed just 
<strong>before</strong> every redelivery attempt. This can be used for the 
situations where you need to alter the message before its redelivered. See 
below for sample.</p><div class="confluence-information-macro 
confluence-information-macro-tip">
  <p class="title">onException and onRedeliver</p>
  <span class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span>
  <div class="confluence-information-macro-body">
-  <p>We also support for per <a shape="rect" 
href="exception-clause.html"><strong>onException</strong></a> to set a 
<strong>onRedeliver</strong>. That means you can do special on redelivery for 
different exceptions, as opposed to onRedelivery set on <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> can be viewed as a 
global scope.</p>
+  <p>We also support for per <a shape="rect" 
href="exception-clause.html"><strong>onException</strong></a> to set an 
<strong><code>onRedeliver</code></strong>. That means you can do special on 
redelivery for different exceptions, as opposed 
to&#160;<strong><code>onRedelivery</code></strong> set on <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> can be viewed as a 
global scope.</p>
  </div>
-</div><h3 id="BookInOnePage-Redeliverydefaultvalues">Redelivery default 
values</h3><p>Redelivery is disabled by default.</p><p>The default redeliver 
policy will use the following 
values:</p><ul><li>maximumRedeliveries=0</li><li>redeliverDelay=1000L (1 
second)</li><li>maximumRedeliveryDelay = 60 * 1000L (60 seconds)</li><li>And 
the exponential backoff and collision avoidance is turned off.</li><li>The 
retriesExhaustedLogLevel are set to LoggingLevel.ERROR</li><li>The 
retryAttemptedLogLevel are set to LoggingLevel.DEBUG</li><li>Stack traces is 
logged for exhausted messages from Camel 2.2 onwards.</li><li>Handled 
exceptions is not logged from Camel 2.3 
onwards</li><li>logExhaustedMessageHistory is true for default error handler, 
and false for dead letter channel.</li><li>logExhaustedMessageBody 
<strong>Camel 2.17:</strong>&#160;is disabled by default to avoid logging 
sensitive message body/header details. If this option is true, 
then&#160;logExhaustedMessageHistory must also be true.</
 li></ul><p>The maximum redeliver delay ensures that a delay is never longer 
than the value, default 1 minute. This can happen if you turn on the 
exponential backoff.</p><p>The maximum redeliveries is the number of 
<strong>re</strong> delivery attempts. By default Camel will try to process the 
exchange 1 + 5 times. 1 time for the normal attempt and then 5 attempts as 
redeliveries.<br clear="none"> Setting the maximumRedeliveries to a negative 
value such as -1 will then always redelivery (unlimited).<br clear="none"> 
Setting the maximumRedeliveries to 0 will disable any re delivery 
attempt.</p><p>Camel will log delivery failures at the DEBUG logging level by 
default. You can change this by specifying retriesExhaustedLogLevel and/or 
retryAttemptedLogLevel. See <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java";>ExceptionBuilderWithRetryLoggingLevelSet
 Test</a> for an example.</p><p>You can turn logging of stack traces on/off. If 
turned off Camel will still log the redelivery attempt. Its just much less 
verbose.</p><h4 id="BookInOnePage-RedeliverDelayPattern">Redeliver Delay 
Pattern</h4><p>Delay pattern is used as a single option to set a range pattern 
for delays. If used then the following options does not apply: (delay, 
backOffMultiplier, useExponentialBackOff, useCollisionAvoidance, 
maximumRedeliveryDelay).</p><p>The idea is to set groups of ranges using the 
following syntax: <code>limit:delay;limit 2:delay 2;limit 3:delay 3;...;limit 
N:delay N</code></p><p>Each group has two values separated with colon</p><ul 
class="alternate"><li>limit = upper limit</li><li>delay = delay in millis<br 
clear="none"> And the groups is again separated with semi colon.<br 
clear="none"> The rule of thumb is that the next groups should have a higher 
limit than the previous group.</li></ul><p>Lets clarify this with an 
example:<br clear="none"> <code>
 delayPattern=5:1000;10:5000;20:20000</code></p><p>That gives us 3 
groups:</p><ul 
class="alternate"><li>5:1000</li><li>10:5000</li><li>20:20000</li></ul><p>Resulting
 in these delays for redelivery attempt:</p><ul 
class="alternate"><li>Redelivery attempt number 1..4 = 0 millis (as the first 
group start with 5)</li><li>Redelivery attempt number 5..9 = 1000 millis (the 
first group)</li><li>Redelivery attempt number 10..19 = 5000 millis (the second 
group)</li><li>Redelivery attempt number 20.. = 20000 millis (the last 
group)</li></ul><p>Note: The first redelivery attempt is 1, so the first group 
should start with 1 or higher.</p><p>You can start a group with limit 1 to eg 
have a starting delay: <code>delayPattern=1:1000;5:5000</code></p><ul 
class="alternate"><li>Redelivery attempt number 1..4 = 1000 millis (the first 
group)</li><li>Redelivery attempt number 5.. = 5000 millis (the last 
group)</li></ul><p>There is no requirement that the next delay should be higher 
than the previous. You c
 an use any delay value you like. For example with 
<code>delayPattern=1:5000;3:1000</code> we start with 5 sec delay and then 
later reduce that to 1 second.</p><h3 
id="BookInOnePage-Redeliveryheader">Redelivery header</h3><p>When a message is 
redelivered the <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/processor/DeadLetterChannel.html";>DeadLetterChannel</a>
 will append a customizable header to the message to indicate how many times 
its been redelivered. <br clear="none"> Before Camel 2.6: The header is 
<strong>CamelRedeliveryCounter</strong>, which is also defined on the 
<code>Exchange.REDELIVERY_COUNTER</code>.<br clear="none"> Starting with 2.6: 
The header <strong>CamelRedeliveryMaxCounter</strong>, which is also defined on 
the <code>Exchange.REDELIVERY_MAX_COUNTER</code>, contains the maximum 
redelivery setting. This header is absent if you use <code>retryWhile</code> or 
have unlimited maximum redelivery configured.<
 /p><p>And a boolean flag whether it is being redelivered or not (first 
attempt)<br clear="none"> The header <strong>CamelRedelivered</strong> contains 
a boolean if the message is redelivered or not, which is also defined on the 
<code>Exchange.REDELIVERED</code>.</p><p>Dynamically calculated delay from the 
exchange<br clear="none"> In Camel 2.9 and 2.8.2: The header is 
<strong>CamelRedeliveryDelay</strong>, which is also defined on the 
<code>Exchange.REDELIVERY_DELAY</code>.<br clear="none"> Is this header is 
absent, normal redelivery rules apply.</p><h4 
id="BookInOnePage-Whichendpointfailed">Which endpoint 
failed</h4><p><strong>Available as of Camel 2.1</strong></p><p>When Camel 
routes messages it will decorate the <a shape="rect" 
href="exchange.html">Exchange</a> with a property that contains the 
<strong>last</strong> endpoint Camel send the <a shape="rect" 
href="exchange.html">Exchange</a> to:</p><div class="code panel pdl" 
style="border-width: 1px;">
+</div><h3 id="BookInOnePage-RedeliveryDefaultValues">Redelivery Default 
Values</h3><p>Redelivery is disabled by default.</p><p>The default redeliver 
policy will use the following 
values:</p><ul><li><strong><code>maximumRedeliveries=0</code></strong></li><li><strong><code>redeliverDelay=1000L</code></strong>
 (1 second)</li><li><strong><code>maximumRedeliveryDelay = 60 * 
1000L</code></strong> (60 
seconds)</li><li><strong><code>backOffMultiplier</code></strong> and 
<strong><code>useExponentialBackOff</code></strong> are 
ignored.</li><li><strong><code>retriesExhaustedLogLevel=LoggingLevel.ERROR</code></strong></li><li><strong><code>retryAttemptedLogLevel=LoggingLevel.DEBUG</code></strong></li><li>Stack
 traces are logged for exhausted messages, from <strong>Camel 
2.2</strong>.</li><li>Handled exceptions are not logged, from <strong>Camel 
2.3</strong>.</li><li><strong><code>logExhaustedMessageHistory</code></strong> 
is true for default error handler, and false for dead letter channel.</li
 ><li><strong><code>logExhaustedMessageBody</code></strong> <strong>Camel 
 >2.17:</strong>&#160;is disabled by default to avoid logging sensitive message 
 >body/header details. If this option is <strong><code>true</code></strong>, 
 >then&#160;<strong><code>logExhaustedMessageHistory</code></strong> must also 
 >be <strong><code>true</code></strong>.</li></ul><p>The maximum redeliver 
 >delay ensures that a delay is never longer than the value, default 1 minute. 
 >This can happen when 
 ><strong><code>useExponentialBackOff=true</code></strong>.</p><p>The&#160;<strong><code>maximumRedeliveries</code></strong>
 > is the number of <strong>re</strong>-delivery attempts. By default Camel 
 >will try to process the exchange 1 + 5 times. 1 time for the normal attempt 
 >and then 5 attempts as redeliveries.<br clear="none"> Setting 
 >the&#160;<strong><code>maximumRedeliveries=-1 </code></strong>(or 
 >&lt;&#160;<strong><code>-1</code></strong>) will then always redelivery 
 >(unlimited).<br clear="none"> Setting the&#160;<str
 ong><code>maximumRedeliveries=0</code></strong> will disable 
re-delivery.</p><p>Camel will log delivery failures at 
the&#160;<strong><code>DEBUG</code></strong> logging level by default. You can 
change this by 
specifying&#160;<strong><code>retriesExhaustedLogLevel</code></strong> and/or 
<strong><code>retryAttemptedLogLevel</code></strong>. See <a shape="rect" 
class="external-link" 
href="http://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/ExceptionBuilderWithRetryLoggingLevelSetTest.java";>ExceptionBuilderWithRetryLoggingLevelSetTest</a>
 for an example.</p><p>You can turn logging of stack traces on/off. If turned 
off Camel will still log the redelivery attempt. It's just much less 
verbose.</p><h4 id="BookInOnePage-RedeliverDelayPattern">Redeliver Delay 
Pattern</h4><p>Delay pattern is used as a single option to set a range pattern 
for delays. When a delay pattern is in use the following options no longer 
apply:</p><ul><li><strong><code>delay</c
 
ode></strong></li><li><strong><code>backOffMultiplier</code></strong></li><li><strong><code>useExponentialBackOff</code></strong></li><li><strong><code>useCollisionAvoidance</code></strong></li><li><strong><code>maximumRedeliveryDelay</code></strong></li></ul><p>The
 idea is to set groups of ranges using the following syntax: 
<strong><code>limit:delay;limit 2:delay 2;limit 3:delay 3;...;limit N:delay 
N</code></strong></p><p>Each group has two values separated with colon:</p><ul 
class="alternate"><li><strong><code>limit</code></strong> = upper 
limit</li><li><strong><code>delay</code></strong>&#160;= delay in 
milliseconds<br clear="none"> And the groups is again separated with 
semi-colon. The rule of thumb is that the next groups should have a higher 
limit than the previous group.</li></ul><p>Lets clarify this with an 
example:<br clear="none"> 
<strong><code>delayPattern=5:1000;10:5000;20:20000</code></strong></p><p>That 
gives us three groups:</p><ul class="alternate"><li><strong><code>
 
5:1000</code></strong></li><li><strong><code>10:5000</code></strong></li><li><strong><code>20:20000</code></strong></li></ul><p>Resulting
 in these delays between redelivery attempts:</p><ul 
class="alternate"><li>Redelivery attempt number&#160;<strong><code>1..4 = 
0ms</code></strong> (as the first group start with 5)</li><li>Redelivery 
attempt number&#160;<strong><code>5..9 = 1000ms</code></strong> (the first 
group)</li><li>Redelivery attempt number&#160;<strong><code>10..19 = 
5000ms</code></strong> (the second group)</li><li>Redelivery attempt 
number&#160;<strong><code>20.. = 20000ms</code></strong> (the last 
group)</li></ul><p>Note: The first redelivery attempt is 
<strong><code>1</code></strong>, so the first group should start 
with&#160;<strong><code>1</code></strong> or higher.</p><p>You can start a 
group with limit&#160;<strong><code>1</code></strong> to e.g., have a starting 
delay: <strong><code>delayPattern=1:1000;5:5000</code></strong></p><ul 
class="alternate"><li>Redelivery 
 attempt number&#160;<strong><code>1..4 = 1000ms</code></strong> (the first 
group)</li><li>Redelivery attempt number&#160;<strong><code>5.. = 
5000ms</code></strong> (the last group)</li></ul><p>There is no requirement 
that the next delay should be higher than the previous. You can use any delay 
value you like. For example with 
<strong><code>delayPattern=1:5000;3:1000</code></strong> we start with 5 sec 
delay and then later reduce that to&#160;<strong><code>1</code></strong> 
second.</p><h3 id="BookInOnePage-Redeliveryheader">Redelivery 
header</h3><p>When a message is redelivered the <a shape="rect" 
class="external-link" 
href="http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/processor/DeadLetterChannel.html";>DeadLetterChannel</a>
 will append a customizable header to the message to indicate how many times 
its been redelivered. <br clear="none"> Before <strong>Camel 2.6</strong>: The 
header is <strong><code>CamelRedeliveryCounter</code></strong>, which is also 
defined on
  the <strong><code>Exchange.REDELIVERY_COUNTER</code></strong>.<br 
clear="none"> From <strong>Camel 2.6</strong>: The 
header&#160;<strong><code>CamelRedeliveryMaxCounter</code></strong>, which is 
also defined on the 
<strong><code>Exchange.REDELIVERY_MAX_COUNTER</code></strong>, contains the 
maximum redelivery setting. This header is absent if you use 
<strong><code>retryWhile</code></strong> or have unlimited maximum redelivery 
configured.</p><p>And a boolean flag whether it is being redelivered or not 
(first attempt). The header&#160;<strong><code>CamelRedelivered</code></strong> 
contains a boolean if the message is redelivered or not, which is also defined 
on the <strong><code>Exchange.REDELIVERED</code></strong>.</p><h3 
id="BookInOnePage-DynamicallyCalculatedDelayFromtheExchange">Dynamically 
Calculated Delay From the Exchange</h3><p>In <strong>Camel 2.9</strong> and 
<strong>2.8.2</strong>: The header 
is&#160;<strong><code>CamelRedeliveryDelay</code></strong>, which is also 
defined
  on the <strong><code>Exchange.REDELIVERY_DELAY</code></strong>. If this 
header is absent, normal redelivery rules apply.</p><h4 
id="BookInOnePage-WhichEndpointFailed">Which Endpoint 
Failed</h4><p><strong>Available as of Camel 2.1</strong></p><p>When Camel 
routes messages it will decorate the <a shape="rect" 
href="exchange.html">Exchange</a> with a property that contains the 
<strong>last</strong> endpoint Camel send the <a shape="rect" 
href="exchange.html">Exchange</a> to:</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">String lastEndpointUri = 
exchange.getProperty(Exchange.TO_ENDPOINT, String.class); </script> 
  </div>
-</div><p>The <code>Exchange.TO_ENDPOINT</code> have the constant value 
<code>CamelToEndpoint</code>.</p><p>This information is updated when Camel 
sends a message to any endpoint. So if it exists its the <strong>last</strong> 
endpoint which Camel send the Exchange to.</p><p>When for example processing 
the <a shape="rect" href="exchange.html">Exchange</a> at a given <a 
shape="rect" href="endpoint.html">Endpoint</a> and the message is to be moved 
into the dead letter queue, then Camel also decorates the Exchange with another 
property that contains that <strong>last</strong> endpoint:</p><div class="code 
panel pdl" style="border-width: 1px;">
+</div><p>The <strong><code>Exchange.TO_ENDPOINT</code></strong> have the 
constant value <strong><code>CamelToEndpoint</code></strong>. This information 
is updated when Camel sends a message to any endpoint. So if it exists its the 
<strong>last</strong> endpoint which Camel send the Exchange to.</p><p>When for 
example processing the <a shape="rect" href="exchange.html">Exchange</a> at a 
given <a shape="rect" href="endpoint.html">Endpoint</a> and the message is to 
be moved into the dead letter queue, then Camel also decorates the Exchange 
with another property that contains that <strong>last</strong> 
endpoint:</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">String failedEndpointUri = 
exchange.getProperty(Exchange.FAILURE_ENDPOINT, String.class); </script> 
  </div>
-</div><p>The <code>Exchange.FAILURE_ENDPOINT</code> have the constant value 
<code>CamelFailureEndpoint</code>.</p><p>This allows for example you to fetch 
this information in your dead letter queue and use that for error reporting.<br 
clear="none"> This is useable if the Camel route is a bit dynamic such as the 
dynamic <a shape="rect" href="recipient-list.html">Recipient List</a> so you 
know which endpoints failed.</p><p><strong>Notice:</strong> These information 
is kept on the Exchange even if the message was successfully processed by a 
given endpoint, and then later fails for example in a local <a shape="rect" 
href="bean.html">Bean</a> processing instead. So beware that this is a hint 
that helps pinpoint errors.</p><div class="code panel pdl" style="border-width: 
1px;">
+</div><p>The <strong><code>Exchange.FAILURE_ENDPOINT</code></strong> have the 
constant value <strong><code>CamelFailureEndpoint</code></strong>.</p><p>This 
allows for example you to fetch this information in your dead letter queue and 
use that for error reporting. This is usable if the Camel route is a bit 
dynamic such as the dynamic <a shape="rect" 
href="recipient-list.html">Recipient List</a> so you know which endpoints 
failed.</p><p><strong>Note:</strong> this information is retained on the 
Exchange even if the message is subsequently processed successfully by a given 
endpoint only to fail, for example, in local <a shape="rect" 
href="bean.html">Bean</a> processing instead. So, beware that this is a hint 
that helps pinpoint errors.</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">from(&amp;quot;activemq:queue:foo&amp;quot;) 
.to(&amp;quot;http://someserver/somepath&amp;quot;) 
.beanRef(&amp;quot;foo&amp;quot;); </script> 
  </div>
-</div><p>Now suppose the route above and a failure happens in the 
<code>foo</code> bean. Then the <code>Exchange.TO_ENDPOINT</code> and 
<code>Exchange.FAILURE_ENDPOINT</code> will still contain the value of <code><a 
shape="rect" class="external-link" href="http://someserver/somepath"; 
rel="nofollow">http://someserver/somepath</a></code>.</p><h3 
id="BookInOnePage-OnPrepareFailure">OnPrepareFailure</h3><p><strong>Available 
as of Camel 2.16</strong></p><p>Before the exchange is sent to the dead letter 
queue, you can use onPrepare to allow a custom&#160;<code>Processor</code> to 
prepare the exchange, such as adding information why the Exchange failed. For 
example the following processor adds a header with the exception 
message</p><div class="code panel pdl" style="border-width: 1px;">
+</div><p>Now suppose the route above and a failure happens in the 
<code>foo</code> bean. Then the 
<strong><code>Exchange.TO_ENDPOINT</code></strong> and 
<strong><code>Exchange.FAILURE_ENDPOINT</code></strong> will still contain the 
value of <code><a shape="rect" class="external-link" 
href="http://someserver/somepath"; 
rel="nofollow">http://someserver/somepath</a></code>.</p><h3 
id="BookInOnePage-OnPrepareFailure"><code>OnPrepareFailure</code></h3><p><strong>Available
 as of Camel 2.16</strong></p><p>Before the exchange is sent to the dead letter 
queue, you can use&#160;<strong><code>onPrepare</code></strong> to allow a 
custom&#160;<strong><code>Processor</code></strong> to prepare the exchange, 
such as adding information why the Exchange failed.</p><p>For example, the 
following processor adds a header with the exception message:</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"> public static class MyPrepareProcessor implements 
Processor { @Override public void process(Exchange exchange) throws Exception { 
Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, 
Exception.class); exchange.getIn().setHeader(&amp;quot;FailedBecause&amp;quot;, 
cause.getMessage()); } }</script> 
  </div>
@@ -11884,15 +11884,15 @@ from(&quot;direct:start&quot;)
  <div class="codeContent panelContent pdl"> 
   <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter">errorHandler(deadLetterChannel(&amp;quot;jms:dead&amp;quot;).onPrepareFailure(new
 MyPrepareProcessor()));</script> 
  </div>
-</div><p>&#160;</p><p>Configuring this from XML DSL is as shown:</p><div 
class="code panel pdl" style="border-width: 1px;">
+</div><p>&#160;</p><p>Configuring this from XML DSL is as follows:</p><div 
class="code panel pdl" style="border-width: 1px;">
  <div class="codeContent panelContent pdl"> 
-  <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"> &amp;lt;bean id=&amp;quot;myPrepare&amp;quot; 
class=&amp;quot;org.apache.camel.processor.DeadLetterChannelOnPrepareTest.MyPrepareProcessor&amp;quot;/&amp;gt;
 &amp;lt;errorHandler id=&amp;quot;dlc&amp;quot; 
type=&amp;quot;DeadLetterChannel&amp;quot; 
deadLetterUri=&amp;quot;jms:dead&amp;quot; 
onPrepareFailureRef=&amp;quot;myPrepare&amp;quot;/&amp;gt;</script> 
+  <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter">&amp;lt;bean id=&amp;quot;myPrepare&amp;quot; 
class=&amp;quot;org.apache.camel.processor.DeadLetterChannelOnPrepareTest.MyPrepareProcessor&amp;quot;/&amp;gt;
 &amp;lt;errorHandler id=&amp;quot;dlc&amp;quot; 
type=&amp;quot;DeadLetterChannel&amp;quot; 
deadLetterUri=&amp;quot;jms:dead&amp;quot; 
onPrepareFailureRef=&amp;quot;myPrepare&amp;quot;/&amp;gt;</script> 
  </div>
-</div><p>&#160;</p><p>The onPrepare is also available using the default error 
handler.</p><h3 id="BookInOnePage-Whichroutefailed">Which route 
failed</h3><p><strong>Available as of Camel 2.10.4/2.11</strong></p><p>When 
Camel error handler handles an error such as <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> or using <a 
shape="rect" href="exception-clause.html">Exception Clause</a> with 
handled=true, then Camel will decorate<br clear="none"> the <a shape="rect" 
href="exchange.html">Exchange</a> with the route id where the error 
occurred.</p><div class="code panel pdl" style="border-width: 1px;">
+</div><p>&#160;</p><p>The&#160;<strong><code>onPrepare</code></strong> is also 
available using the default error handler.</p><h3 
id="BookInOnePage-WhichRouteFailed">Which Route Failed</h3><p><strong>Available 
as of Camel 2.10.4/2.11</strong></p><p>When Camel error handler handles an 
error such as <a shape="rect" href="dead-letter-channel.html">Dead Letter 
Channel</a> or using <a shape="rect" href="exception-clause.html">Exception 
Clause</a> with <strong><code>handled=true</code></strong>, then Camel will 
decorate the <a shape="rect" href="exchange.html">Exchange</a> with the route 
id where the error occurred.</p><p>Example:</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">String failedRouteId = 
exchange.getProperty(Exchange.FAILURE_ROUTE_ID, String.class); </script> 
  </div>
-</div><p>The <code>Exchange.FAILURE_ROUTE_ID</code> have the constant value 
<code>CamelFailureRouteId</code>.</p><p>This allows for example you to fetch 
this information in your dead letter queue and use that for error 
reporting.</p><h3 
id="BookInOnePage-Controlifredeliveryisallowedduringstopping/shutdown">Control 
if redelivery is allowed during stopping/shutdown</h3><p><strong>Available as 
of Camel 2.11</strong></p><p>Prior to Camel 2.10, Camel will perform redelivery 
while stopping a route, or shutting down Camel. This has improved a bit in 
Camel 2.10 onwards, as Camel will not perform redelivery attempts when shutting 
down aggressively (eg during <a shape="rect" 
href="graceful-shutdown.html">Graceful Shutdown</a> and timeout hit). From 
Camel 2.11 onwards there is a new option 
<code>allowRedeliveryWhileStopping</code> which you can use to control if 
redelivery is allowed or not; notice that any in progress redelivery will still 
be executed. This option can only disallow any redeli
 very to be executed <strong>after</strong> the stopping of a route/shutdown of 
Camel has been triggered. If a redelivery is dissallowed then a 
<code>RejectedExcutionException</code> is set on the <a shape="rect" 
href="exchange.html">Exchange</a> and the processing of the <a shape="rect" 
href="exchange.html">Exchange</a> stops. This means any consumer will see the 
<a shape="rect" href="exchange.html">Exchange</a> as failed due the 
<code>RejectedExecutionException</code>.</p><p>The default value is 
<code>true</code> to be backwards compatible as before. For example the 
following sample shows how to do this with Java DSL and XML DSL
+</div><p>The <strong><code>Exchange.FAILURE_ROUTE_ID</code></strong> have the 
constant value <strong><code>CamelFailureRouteId</code></strong>. This allows 
for example you to fetch this information in your dead letter queue and use 
that for error reporting.</p><h3 
id="BookInOnePage-ControlifRedeliveryisAllowedDuringStopping/Shutdown">Control 
if Redelivery is Allowed During Stopping/Shutdown</h3><p><strong>Available as 
of Camel 2.11</strong></p><p>Before <strong>Camel 2.10</strong>, Camel would 
perform redelivery while stopping a route, or shutting down Camel. This has 
improved a bit in <strong>Camel 2.10</strong>: Camel will no longer perform 
redelivery attempts when shutting down aggressively, e.g., during <a 
shape="rect" href="graceful-shutdown.html">Graceful Shutdown</a> and timeout 
hit.</p><p>From <strong>Camel 2.11</strong>: there is a new option 
<strong><code>allowRedeliveryWhileStopping</code></strong> which you can use to 
control if redelivery is allowed or not; notice that 
 any in progress redelivery will still be executed. This option can only 
disallow any redelivery to be executed <em><strong>after</strong></em> the 
stopping of a route/shutdown of Camel has been triggered. If a redelivery is 
disallowed then a <strong><code>RejectedExcutionException</code></strong> is 
set on the <a shape="rect" href="exchange.html">Exchange</a> and the processing 
of the <a shape="rect" href="exchange.html">Exchange</a> stops. This means any 
consumer will see the <a shape="rect" href="exchange.html">Exchange</a> as 
failed due the <strong><code>RejectedExcutionException</code></strong>. The 
default value is <strong><code>true</code></strong> for backward 
compatibility.</p><p>For example, the following snippet shows how to do this 
with Java DSL and XML DSL:
  </p><div class="code panel pdl" style="border-width: 1px;">
   <div class="codeContent panelContent pdl"> 
    <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"> // this error handler will try up till 20 redelivery 
attempts with 1 second between. // however if we are stopping then do not allow 
any redeliver attempts. errorHandler(defaultErrorHandler() 
.allowRedeliveryWhileStopping(false) 
.maximumRedeliveries(20).redeliveryDelay(1000).retryAttemptedLogLevel(LoggingLevel.INFO));
 from(&amp;quot;seda:foo&amp;quot;).routeId(&amp;quot;foo&amp;quot;) 
.to(&amp;quot;mock:foo&amp;quot;) .throwException(new 
IllegalArgumentException(&amp;quot;Forced&amp;quot;)); </script> 
@@ -11912,17 +11912,17 @@ from(&quot;direct:start&quot;)
   <div class="codeContent panelContent pdl"> 
    <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"> RouteBuilder builder = new RouteBuilder() { public 
void configure() { // configures dead letter channel to use seda queue for 
errors and use at most 2 redelveries // and exponential backoff 
errorHandler(deadLetterChannel(&amp;quot;seda:errors&amp;quot;).maximumRedeliveries(2).useExponentialBackOff());
 // here is our route 
from(&amp;quot;seda:a&amp;quot;).to(&amp;quot;seda:b&amp;quot;); } }; </script> 
   </div>
- </div><h3 id="BookInOnePage-HowcanImodifytheExchangebeforeredelivery?">How 
can I modify the Exchange before redelivery?</h3><p>We support directly in <a 
shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to set a 
<a shape="rect" href="processor.html">Processor</a> that is executed 
<strong>before</strong> each redelivery attempt.</p><p>When <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> is doing redeliver its 
possible to configure a <a shape="rect" href="processor.html">Processor</a> 
that is executed just <strong>before</strong> every redelivery attempt. This 
can be used for the situations where you need to alter the message before its 
redelivered.</p><p>Here we configure the <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> to use our processor 
<code>MyRedeliveryProcessor</code> to be executed before each redelivery.
+ </div><h3 id="BookInOnePage-HowCanIModifytheExchangeBeforeRedelivery?">How 
Can I Modify the Exchange Before Redelivery?</h3><p>We support directly in <a 
shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> to set a 
<a shape="rect" href="processor.html">Processor</a> that is executed 
<strong>before</strong> each redelivery attempt. When <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> is doing redeliver its 
possible to configure a <a shape="rect" href="processor.html">Processor</a> 
that is executed just <strong>before</strong> every redelivery attempt. This 
can be used for the situations where you need to alter the message before its 
redelivered. Here we configure the <a shape="rect" 
href="dead-letter-channel.html">Dead Letter Channel</a> to use our processor 
<strong><code>MyRedeliveryProcessor</code></strong> to be executed before each 
redelivery.
  </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"> // we configure our Dead Letter Channel to invoke // 
MyRedeliveryProcessor before a redelivery is // attempted. This allows us to 
alter the message before 
errorHandler(deadLetterChannel(&amp;quot;mock:error&amp;quot;).maximumRedeliveries(5)
 .onRedelivery(new MyRedeliverProcessor()) // setting delay to zero is just to 
make unit testing faster .redeliveryDelay(0L)); </script> 
   </div>
- </div>And this is the processor <code>MyRedeliveryProcessor</code> where we 
alter the message.
+ </div>And this is the processor 
<strong><code>MyRedeliveryProcessor</code></strong> where we alter the message.
  <div class="code panel pdl" style="border-width: 1px;">
   <div class="codeContent panelContent pdl"> 
    <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"> // This is our processor that is executed before 
every redelivery attempt // here we can do what we want in the java code, such 
as altering the message public class MyRedeliverProcessor implements Processor 
{ public void process(Exchange exchange) throws Exception { // the message is 
being redelivered so we can alter it // we just append the redelivery counter 
to the body // you can of course do all kind of stuff instead String body = 
exchange.getIn().getBody(String.class); int count = 
exchange.getIn().getHeader(Exchange.REDELIVERY_COUNTER, Integer.class); 
exchange.getIn().setBody(body + count); // the maximum redelivery was set to 5 
int max = exchange.getIn().getHeader(Exchange.REDELIVERY_MAX_COUNTER, 
Integer.class); assertEquals(5, max); } } </script> 
   </div>
- </div><h3 
id="BookInOnePage-HowcanIlogwhatcausedtheDeadLetterChanneltobeinvoked?">How can 
I log what caused the Dead Letter Channel to be invoked?</h3><p>You often need 
to know what went wrong that caused the Dead Letter Channel to be used and it 
does not offer logging for this purpose. So the Dead Letter Channel's endpoint 
can be set to a endpoint of our own (such 
as&#160;<code>direct:deadLetterChannel</code>). We write a route to accept this 
Exchange and log the Exception, then forward on to where we want the failed 
Exchange moved to (which might be a DLQ queue for instance). See also&#160;<a 
shape="rect" class="external-link" 
href="http://stackoverflow.com/questions/13711462/logging-camel-exceptions-and-sending-to-the-dead-letter-channel";
 
rel="nofollow">http://stackoverflow.com/questions/13711462/logging-camel-exceptions-and-sending-to-the-dead-letter-channel</a></p><p></p><h4
 id="BookInOnePage-UsingThisPattern.8">Using This Pattern</h4> <p>If you would 
like to use this EIP Patt
 ern 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><ul 
class="alternate"><li><a shape="rect" href="error-handler.html">Error 
Handler</a></li><li><a shape="rect" href="exception-clause.html">Exception 
Clause</a></li></ul><h3 id="BookInOnePage-GuaranteedDelivery">Guaranteed 
Delivery</h3><p>Camel supports the <a shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/GuaranteedMessaging.html"; 
rel="nofollow">Guaranteed Delivery</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> using among others 
the following components:</p><ul><li><a shape="re
 ct" href="file2.html">File</a> for using file systems as a persistent store of 
messages</li><li><a shape="rect" href="jms.html">JMS</a> when using persistent 
delivery (the default) for working with JMS Queues and Topics for high 
performance, clustering and load balancing</li><li><a shape="rect" 
href="jpa.html">JPA</a> for using a database as a persistence layer, or use any 
of the many other database component such as <a shape="rect" 
href="sql.html">SQL</a>, <a shape="rect" href="jdbc.html">JDBC</a>, <a 
shape="rect" href="ibatis.html">iBATIS</a>/<a shape="rect" 
href="mybatis.html">MyBatis</a>, <a shape="rect" 
href="hibernate.html">Hibernate</a></li><li><a shape="rect" 
href="hawtdb.html">HawtDB</a> for a lightweight key-value persistent 
store</li></ul><p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-external-resource" 
src="http://www.enterpriseintegrationpatterns.com/img/GuaranteedMessagingSolution.gif";
 data-image-src="http://www.enter
 
priseintegrationpatterns.com/img/GuaranteedMessagingSolution.gif"></span></p><h4
 id="BookInOnePage-Example.7">Example</h4><p>The following example demonstrates 
illustrates the use of&#160;<a shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/GuaranteedMessaging.html"; 
rel="nofollow">Guaranteed Delivery</a>&#160;within the&#160;<a shape="rect" 
href="jms.html">JMS</a>&#160;component. By default, a message is not considered 
successfully delivered until the recipient has persisted the message locally 
guaranteeing its receipt in the event the destination becomes 
unavailable.</p><p><strong>Using the&#160;<a shape="rect" 
href="fluent-builders.html">Fluent Builders</a></strong></p><div class="code 
panel pdl" style="border-width: 1px;">
+ </div><h3 
id="BookInOnePage-HowCanILogWhatCausedtheDeadLetterChanneltobeInvoked?">How Can 
I Log What Caused the Dead Letter Channel to be Invoked?</h3><p>You often need 
to know what went wrong that caused the Dead Letter Channel to be used and it 
does not offer logging for this purpose. So the Dead Letter Channel's endpoint 
can be set to a endpoint of our own (such 
as&#160;<strong><code>direct:deadLetterChannel</code></strong>). We write a 
route to accept this Exchange and log the Exception, then forward on to where 
we want the failed Exchange moved to (which might be a DLQ queue for instance). 
See also&#160;<a shape="rect" class="external-link" 
href="http://stackoverflow.com/questions/13711462/logging-camel-exceptions-and-sending-to-the-dead-letter-channel";
 
rel="nofollow">http://stackoverflow.com/questions/13711462/logging-camel-exceptions-and-sending-to-the-dead-letter-channel</a></p><p></p><h4
 id="BookInOnePage-UsingThisPattern.8">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><ul class="alternate"><li><a shape="rect" 
href="error-handler.html">Error Handler</a></li><li><a shape="rect" 
href="exception-clause.html">Exception Clause</a></li></ul><h3 
id="BookInOnePage-GuaranteedDelivery">Guaranteed Delivery</h3><p>Camel supports 
the <a shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/GuaranteedMessaging.html"; 
rel="nofollow">Guaranteed Delivery</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> using among others 
the following components:</p><ul
 ><li><a shape="rect" href="file2.html">File</a> for using file systems as a 
 >persistent store of messages</li><li><a shape="rect" href="jms.html">JMS</a> 
 >when using persistent delivery (the default) for working with JMS Queues and 
 >Topics for high performance, clustering and load balancing</li><li><a 
 >shape="rect" href="jpa.html">JPA</a> for using a database as a persistence 
 >layer, or use any of the many other database component such as <a 
 >shape="rect" href="sql.html">SQL</a>, <a shape="rect" 
 >href="jdbc.html">JDBC</a>, <a shape="rect" href="ibatis.html">iBATIS</a>/<a 
 >shape="rect" href="mybatis.html">MyBatis</a>, <a shape="rect" 
 >href="hibernate.html">Hibernate</a></li><li><a shape="rect" 
 >href="hawtdb.html">HawtDB</a> for a lightweight key-value persistent 
 >store</li></ul><p><span class="confluence-embedded-file-wrapper"><img 
 >class="confluence-embedded-image confluence-external-resource" 
 >src="http://www.enterpriseintegrationpatterns.com/img/GuaranteedMessagingSolution.gif";
 > data-image-src=
 
"http://www.enterpriseintegrationpatterns.com/img/GuaranteedMessagingSolution.gif";></span></p><h4
 id="BookInOnePage-Example.7">Example</h4><p>The following example demonstrates 
illustrates the use of&#160;<a shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/GuaranteedMessaging.html"; 
rel="nofollow">Guaranteed Delivery</a>&#160;within the&#160;<a shape="rect" 
href="jms.html">JMS</a>&#160;component. By default, a message is not considered 
successfully delivered until the recipient has persisted the message locally 
guaranteeing its receipt in the event the destination becomes 
unavailable.</p><p><strong>Using the&#160;<a shape="rect" 
href="fluent-builders.html">Fluent Builders</a></strong></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">from(&amp;quot;direct:start&amp;quot;) 
.to(&amp;quot;jms:queue:foo&amp;quot;);</script> 
  </div>
@@ -14234,8 +14234,8 @@ cometds://localhost:8443/service/mychann
  <div class="confluence-information-macro-body">
   <p>When using CXF in streaming modes (see DataFormat option), then also read 
about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p>
  </div>
-</div><p>The <strong>cxf:</strong> component provides integration with <a 
shape="rect" href="http://cxf.apache.org";>Apache CXF</a> for connecting to 
JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/ 
div.rbtoc1485983970754 {padding: 0px;} div.rbtoc1485983970754 ul {list-style: 
disc;margin-left: 0px;} div.rbtoc1485983970754 li {margin-left: 
0px;padding-left: 0px;} /**/</style>
- </p><div class="toc-macro rbtoc1485983970754"> 
+</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">/**/ 
div.rbtoc1486171111973 {padding: 0px;} div.rbtoc1486171111973 ul {list-style: 
disc;margin-left: 0px;} div.rbtoc1486171111973 li {margin-left: 
0px;padding-left: 0px;} /**/</style>
+ </p><div class="toc-macro rbtoc1486171111973"> 
   <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-CXFComponent">CXF Component</a> 
     <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect" 
href="#BookInOnePage-Options">Options</a> 
       <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the 
dataformats</a> 


Reply via email to