Modified: websites/production/camel/content/book-pattern-appendix.html
==============================================================================
--- websites/production/camel/content/book-pattern-appendix.html (original)
+++ websites/production/camel/content/book-pattern-appendix.html Thu Apr 21 
13:20:48 2016
@@ -1068,7 +1068,7 @@ public String slip(String body, @Propert
 </div></div><p>In the above we can use the <a shape="rect" 
href="parameter-binding-annotations.html">Parameter Binding Annotations</a> to 
bind different parts of the <a shape="rect" href="message.html">Message</a> to 
method parameters or use an <a shape="rect" 
href="expression.html">Expression</a> such as using <a shape="rect" 
href="xpath.html">XPath</a> or <a shape="rect" 
href="xquery.html">XQuery</a>.</p><p>The method can be invoked in a number of 
ways as described in the <a shape="rect" href="bean-integration.html">Bean 
Integration</a> such as</p><ul><li><a shape="rect" 
href="pojo-producing.html">POJO Producing</a></li><li><a shape="rect" 
href="spring-remoting.html">Spring Remoting</a></li><li><a shape="rect" 
href="bean.html">Bean</a> component</li></ul><p></p><h4 
id="BookPatternAppendix-UsingThisPattern.16">Using This Pattern</h4>
 
 <p>If you would like to use this EIP Pattern then please read the <a 
shape="rect" href="getting-started.html">Getting Started</a>, you may also find 
the <a shape="rect" href="architecture.html">Architecture</a> useful 
particularly the description of <a shape="rect" 
href="endpoint.html">Endpoint</a> and <a shape="rect" 
href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect" 
href="examples.html">Examples</a> first before trying this pattern out.</p>
-<h3 id="BookPatternAppendix-RecipientList">Recipient List</h3><p>The <a 
shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/RecipientList.html"; 
rel="nofollow">Recipient List</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> allows you to 
route messages to a number of dynamically specified recipients.</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif"; 
data-image-src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif";></span></p><p>The
 recipients will receive a copy of the <strong>same</strong> <a shape="rect" 
href="exchange.html">Exchange</a>, and Camel will execute them 
sequentially.</p><h3 id="BookPatternAppendix-Options.1">Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" ro
 wspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>delimiter</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>,</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Delimiter used if the <a 
shape="rect" href="expression.html">Expression</a> returned multiple endpoints. 
<strong>Camel 2.13</strong> can be disabled using "false"</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>An <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html";>AggregationStrategy</a>
 that will 
 assemble the replies from recipients into a single outgoing message from the 
<a shape="rect" href="recipient-list.html">Recipient List</a>. By default Camel 
will use the last reply as the outgoing message. From <strong>Camel 
2.12</strong> onwards you can also use a POJO as the 
<code>AggregationStrategy</code>, see the <a shape="rect" 
href="aggregator2.html">Aggregator</a> page for more details. If an exception 
is thrown from the aggregate method in the AggregationStrategy, then by 
default, that exception&#160;is not handled by the error handler. The error 
handler can be enabled to react if enabling the shareUnitOfWork 
option.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodName</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12:</strong> This option can be used to 
explicitly declare the method name to use, when using POJOs as the <code>Aggreg
 ationStrategy</code>. See the <a shape="rect" 
href="aggregator2.html">Aggregator</a><span>&#160;</span>page for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodAllowNull</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> If 
this option is <code>false</code> then the aggregate method is not used if 
there was no data to enrich. If this option is <code>true</code> then 
<code>null</code> is used as the <code>oldExchange</code> (when no data to 
enrich), when using POJOs as the <code>AggregationStrategy</code>. See the <a 
shape="rect" href="aggregator2.html">Aggregator</a> page for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelProcessing</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class
 ="confluenceTd"><p><strong>Camel 2.2:</strong> If enabled, messages are sent 
to the recipients concurrently. Note that the calling thread will still wait 
until all messages have been fully processed before it continues; it is the 
sending and processing of replies from recipients which happens in 
parallel.</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelAggregate</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.14:</strong> If enabled 
then the <code>aggregate</code> method on <code>AggregationStrategy</code> can 
be called concurrently. Notice that this would require the implementation of 
<code>AggregationStrategy</code> to be implemented as thread-safe. By default 
this is <code>false</code> meaning that Camel synchronizes the call to the 
<code>aggregate</code> method. Thou
 gh in some use-cases this can be used to archive higher performance when the 
<code>AggregationStrategy</code> is implemented as 
thread-safe.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>executorServiceRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.2:</strong> A custom <a shape="rect" 
href="threading-model.html">Thread Pool</a> to use for parallel processing. 
Note that enabling this option implies parallel processing, so you need not 
enable that option as well.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>stopOnException</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.2:</strong> Whether to 
immediately stop processing when an exception occurs. If disabled, Camel will 
send the message to all recipients regard
 less of any individual failures. You can process exceptions in an <a 
shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html";>AggregationStrategy</a>
 implementation, which supports full control of error 
handling.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>ignoreInvalidEndpoints</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
Whether to ignore an endpoint URI that could not be resolved. If disabled, 
Camel will throw an exception identifying the invalid endpoint 
URI.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>streaming</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> If ena
 bled, Camel will process replies out-of-order - that is, in the order received 
in reply from each recipient. If disabled, Camel will process replies in the 
same order as specified by the <a shape="rect" 
href="expression.html">Expression</a>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>timeout</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> Specifies a 
processing timeout in milliseconds. If the <a shape="rect" 
href="recipient-list.html">Recipient List</a> hasn't been able to send and 
process all replies within this timeframe, then the timeout triggers and the <a 
shape="rect" href="recipient-list.html">Recipient List</a> breaks out, with 
message flow continuing to the next element. Note that if you provide a <a 
shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregat
 e/TimeoutAwareAggregationStrategy.html">TimeoutAwareAggregationStrategy</a>, 
its <code>timeout</code> method is invoked before breaking out. 
<strong>Beware:</strong> If the timeout is reached with running tasks still 
remaining, certain tasks (for which it is difficult for Camel to shut down in a 
graceful manner) may continue to run. So use this option with caution. We may 
be able to improve this functionality in future Camel 
releases.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>onPrepareRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.8:</strong> A custom <a shape="rect" 
href="processor.html">Processor</a> to prepare the copy of the <a shape="rect" 
href="exchange.html">Exchange</a> each recipient will receive. This allows you 
to perform arbitrary transformations, such as deep-cloning the message payload 
(or any other custom logic).</p></td></tr><tr>
 <td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>shareUnitOfWork</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Whether the 
unit of work should be shared. See <a shape="rect" 
href="splitter.html#Splitter-Sharingunitofwork">the same option on Splitter</a> 
for more details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>cacheSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.13.1/2.12.4:</strong> 
Allows to configure the cache size for the <code>ProducerCache</code> which 
caches producers for reuse in the recipient list. Will by default use the 
default cache size which is 1000. Setting the value to -1 allows to turn off 
the cache completely.</p></td></tr></tbody></table></div></div><h4 
id="BookPatternAppendix-St
 aticRecipientList">Static Recipient List</h4><p>The following example shows 
how to route a request from an input <strong>queue:a</strong> endpoint to a 
static list of destinations</p><p><strong>Using Annotations</strong><br 
clear="none"> You can use the <a shape="rect" 
href="recipientlist-annotation.html">RecipientList Annotation</a> on a POJO to 
create a Dynamic Recipient List. For more details see the <a shape="rect" 
href="bean-integration.html">Bean Integration</a>.</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">
+<h3 id="BookPatternAppendix-RecipientList">Recipient List</h3><p>The <a 
shape="rect" class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/RecipientList.html"; 
rel="nofollow">Recipient List</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> allows you to 
route messages to a number of dynamically specified recipients.</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif"; 
data-image-src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif";></span></p><p>The
 recipients will receive a copy of the <strong>same</strong> <a shape="rect" 
href="exchange.html">Exchange</a>, and Camel will execute them 
sequentially.</p><h3 id="BookPatternAppendix-Options.1">Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" ro
 wspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>delimiter</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>,</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Delimiter used if the <a 
shape="rect" href="expression.html">Expression</a> returned multiple endpoints 
(like "<span style="color: rgb(0,0,0);">direct:foo,direct:bar"</span>). From 
<strong>Camel 2.13</strong> onwards this can be disabled by setting delimiter 
to "false".</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>An <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-co
 
re/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html">AggregationStrategy</a>
 that will assemble the replies from recipients into a single outgoing message 
from the <a shape="rect" href="recipient-list.html">Recipient List</a>. By 
default Camel will use the last reply as the outgoing message. From 
<strong>Camel 2.12</strong> onwards you can also use a POJO as the 
<code>AggregationStrategy</code>, see the <a shape="rect" 
href="aggregator2.html">Aggregator</a> page for more details. If an exception 
is thrown from the aggregate method in the AggregationStrategy, then by 
default, that exception&#160;is not handled by the error handler. The error 
handler can be enabled to react if enabling the shareUnitOfWork 
option.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodName</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12:</strong
 > This option can be used to explicitly declare the method name to use, when 
 > using POJOs as the <code>AggregationStrategy</code>. See the <a shape="rect" 
 > href="aggregator2.html">Aggregator</a><span>&#160;</span>page for more 
 > details.</p></td></tr><tr><td colspan="1" rowspan="1" 
 > class="confluenceTd"><p><code>strategyMethodAllowNull</code></p></td><td 
 > colspan="1" rowspan="1" 
 > class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
 > rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> If this 
 > option is <code>false</code> then the aggregate method is not used if there 
 > was no data to enrich. If this option is <code>true</code> then 
 > <code>null</code> is used as the <code>oldExchange</code> (when no data to 
 > enrich), when using POJOs as the <code>AggregationStrategy</code>. See the 
 > <a shape="rect" href="aggregator2.html">Aggregator</a> page for more 
 > details.</p></td></tr><tr><td colspan="1" rowspan="1" 
 > class="confluenceTd"><p><code>parallelProcessing</code></p></td><td 
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.2:</strong> If 
enabled, messages are sent to the recipients concurrently. Note that the 
calling thread will still wait until all messages have been fully processed 
before it continues; it is the sending and processing of replies from 
recipients which happens in parallel.</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelAggregate</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.14:</strong> If enabled 
then the <code>aggregate</code> method on <code>AggregationStrategy</code> can 
be called concurrently. Notice that this would require the implementation of 
<code>AggregationStrategy</code> to be implemented as thread-safe. By default th
 is is <code>false</code> meaning that Camel synchronizes the call to the 
<code>aggregate</code> method. Though in some use-cases this can be used to 
archive higher performance when the <code>AggregationStrategy</code> is 
implemented as thread-safe.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>executorServiceRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.2:</strong> A custom <a shape="rect" 
href="threading-model.html">Thread Pool</a> to use for parallel processing. 
Note that enabling this option implies parallel processing, so you need not 
enable that option as well.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>stopOnException</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.2:</strong> Whether to 
immediately
  stop processing when an exception occurs. If disabled, Camel will send the 
message to all recipients regardless of any individual failures. You can 
process exceptions in an <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html";>AggregationStrategy</a>
 implementation, which supports full control of error 
handling.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>ignoreInvalidEndpoints</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
Whether to ignore an endpoint URI that could not be resolved. If disabled, 
Camel will throw an exception identifying the invalid endpoint 
URI.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>streaming</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code
 >false</code></p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><strong>Camel 2.5:</strong> If enabled, Camel will 
 >process replies out-of-order - that is, in the order received in reply from 
 >each recipient. If disabled, Camel will process replies in the same order as 
 >specified by the <a shape="rect" href="expression.html">Expression</a>. <span 
 >style="color: rgb(0,0,0);">So this specifies whether the response messages 
 >are aggregated as they come in, or</span><span> i</span><span style="color: 
 >rgb(0,0,0);">n the exact order as the recipient list was evaluated. 
 ></span>Only relevant if you enable parallelProcessing.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>timeout</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> Specifies a 
 >processing timeout in milliseconds. If the <a shape="rect" 
 >href="recipient-list.html">Recipient List</a> hasn'
 t been able to send and process all replies within this timeframe, then the 
timeout triggers and the <a shape="rect" href="recipient-list.html">Recipient 
List</a> breaks out, with message flow continuing to the next element. Note 
that if you provide a <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.html";>TimeoutAwareAggregationStrategy</a>,
 its <code>timeout</code> method is invoked before breaking out. 
<strong>Beware:</strong> If the timeout is reached with running tasks still 
remaining, certain tasks (for which it is difficult for Camel to shut down in a 
graceful manner) may continue to run. So use this option with caution. We may 
be able to improve this functionality in future Camel 
releases.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>onPrepareRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td>
 <td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
2.8:</strong> A custom <a shape="rect" href="processor.html">Processor</a> to 
prepare the copy of the <a shape="rect" href="exchange.html">Exchange</a> each 
recipient will receive. This allows you to perform arbitrary transformations, 
such as deep-cloning the message payload (or any other custom 
logic).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>shareUnitOfWork</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Whether the 
unit of work should be shared. See <a shape="rect" 
href="splitter.html#Splitter-Sharingunitofwork">the same option on Splitter</a> 
for more details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>cacheSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" 
rowspa
 n="1" class="confluenceTd"><p><strong>Camel 2.13.1/2.12.4:</strong> Allows to 
configure the cache size for the <code>ProducerCache</code> which caches 
producers for reuse in the recipient list. Will by default use the default 
cache size which is 1000. Setting the value to -1 allows to turn off the cache 
completely.</p></td></tr></tbody></table></div></div><h4 
id="BookPatternAppendix-StaticRecipientList">Static Recipient List</h4><p>The 
following example shows how to route a request from an input 
<strong>queue:a</strong> endpoint to a static list of 
destinations</p><p><strong>Using Annotations</strong><br clear="none"> You can 
use the <a shape="rect" href="recipientlist-annotation.html">RecipientList 
Annotation</a> on a POJO to create a Dynamic Recipient List. For more details 
see the <a shape="rect" href="bean-integration.html">Bean 
Integration</a>.</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"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
     public void configure() {
@@ -1157,7 +1157,7 @@ from(&quot;direct:a&quot;).recipientList
        &lt;/recipientList&gt;
    &lt;/route&gt;
 ]]></script>
-</div></div><p><strong>Note:</strong> You can combine 
<code>parallelProcessing</code> and <code>stopOnException</code> and have them 
both <code>true</code>.</p><h3 
id="BookPatternAppendix-Ignoreinvalidendpoints">Ignore invalid 
endpoints</h3><p><strong>Available as of Camel 2.3</strong></p><p>The <a 
shape="rect" href="recipient-list.html">Recipient List</a> now supports 
<code>ignoreInvalidEndpoints</code> which the <a shape="rect" 
href="routing-slip.html">Routing Slip</a> also supports. You can use it to skip 
endpoints which are invalid.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p><strong>Note:</strong> You can combine 
<code>parallelProcessing</code> and <code>stopOnException</code> and have them 
both <code>true</code>.</p><h3 
id="BookPatternAppendix-Ignoreinvalidendpoints">Ignore invalid 
endpoints</h3><p><strong>Available as of Camel 2.3</strong></p><p>The <a 
shape="rect" href="recipient-list.html">Recipient List</a> now supports 
<code>ignoreInvalidEndpoints</code> (like the <a shape="rect" 
href="routing-slip.html">Routing Slip</a>). You can use it to skip endpoints 
which are invalid.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[    
from(&quot;direct:a&quot;).recipientList(header(&quot;myHeader&quot;)).ignoreInvalidEndpoints();
 ]]></script>
 </div></div><p>And in Spring XML it is an attribute on the recipient list 
tag.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
@@ -1184,7 +1184,7 @@ from(&quot;direct:a&quot;).recipientList
 
    &lt;bean id=&quot;myStrategy&quot; 
class=&quot;com.mycompany.MyOwnAggregationStrategy&quot;/&gt;
 ]]></script>
-</div></div><h4 
id="BookPatternAppendix-KnowingwhichendpointwhenusingcustomAggregationStrategy">Knowing
 which endpoint when using custom 
<code>AggregationStrategy</code></h4><p><strong>Available as of Camel 
2.12</strong></p><p>When using a custom <code>AggregationStrategy</code> then 
the <code>aggregate</code> method is always invoked in sequential order (also 
if parallel processing is enabled) of the endpoints the <a shape="rect" 
href="recipient-list.html">Recipient List</a> is using. However from Camel 2.12 
onwards this is easier to know as the <code>newExchange</code> <a shape="rect" 
href="exchange.html">Exchange</a> has a property stored (key is 
<code>Exchange.RECIPIENT_LIST_ENDPOINT</code> with the uri of the <a 
shape="rect" href="endpoint.html">Endpoint</a>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h4 
id="BookPatternAppendix-KnowingwhichendpointwhenusingcustomAggregationStrategy">Knowing
 which endpoint when using custom 
<code>AggregationStrategy</code></h4><p><strong>Available as of Camel 
2.12</strong></p><p>When using a custom <code>AggregationStrategy</code> then 
the <code>aggregate</code> method is always invoked in sequential order (also 
if parallel processing is enabled) of the endpoints the <a shape="rect" 
href="recipient-list.html">Recipient List</a> is using. However from Camel 2.12 
onwards this is easier to know as the <code>newExchange</code> <a shape="rect" 
href="exchange.html">Exchange</a>&#160;now has a property stored (key is 
<code>Exchange.RECIPIENT_LIST_ENDPOINT</code> with the uri of the <a 
shape="rect" href="endpoint.html">Endpoint</a>. So you know which endpoint you 
are aggregating from. The code block shows how to access this property in your 
<a shape="rect" href="aggregator2.html">Aggregator</a>.&#160;</p><div 
class="code panel pdl" style="bor
 der-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[    @Override
     public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
         String uri = newExchange.getProperty(Exchange.RECIPIENT_LIST_ENDPOINT, 
String.class);

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

Modified: websites/production/camel/content/hystrix-eip.html
==============================================================================
--- websites/production/camel/content/hystrix-eip.html (original)
+++ websites/production/camel/content/hystrix-eip.html Thu Apr 21 13:20:48 2016
@@ -115,7 +115,7 @@
     &lt;to uri=&quot;mock:result&quot;/&gt;
   &lt;/route&gt;
 &lt;/camelContext&gt;]]></script>
-</div></div><p>&#160;</p><h3 
id="HystrixEIP-ConfiguringHystrixExample">Configuring Hystrix 
Example</h3><p>Hystrix has many options as listed in the table above. For 
example to set a higher timeout to 5 seconds, and also let the circuit breaker 
wait 10 seconds before attempting a request again when the state was tripped to 
be open.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div><h3 id="HystrixEIP-onFallbackvsonFallbackViaNetwork">onFallback vs 
onFallbackViaNetwork</h3><p>If you are using onFallback then that is intended 
to be local processing only where you can do a message transformation or call a 
bean or something as the fallback. If you need to call an external service over 
the network then you should use onFallbackVisNetwork that processes that wraps 
that processing in another HystrixCommand that runs in its own thread pool to 
not saturn the first command using in the Hystrix EIP.</p><h3 
id="HystrixEIP-ConfiguringHystrixExample">Configuring Hystrix 
Example</h3><p>Hystrix has many options as listed in the table above. For 
example to set a higher timeout to 5 seconds, and also let the circuit breaker 
wait 10 seconds before attempting a request again when the state was tripped to 
be open.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;direct:start&quot;)
     .hystrix()
         .hystrixConfiguration()
@@ -161,7 +161,7 @@
     &lt;to uri=&quot;mock:result&quot;/&gt;
   &lt;/route&gt;
 &lt;/camelContext&gt;]]></script>
-</div></div></div>
+</div></div><p>&#160;</p><h3 id="HystrixEIP-Example.1">Example</h3><p>You can 
find an example in the source code: <a shape="rect" class="external-link" 
href="https://github.com/apache/camel/tree/master/examples/camel-example-hystrix";
 rel="nofollow">camel-example-hystrix</a>.</p></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/recipient-list.html
==============================================================================
--- websites/production/camel/content/recipient-list.html (original)
+++ websites/production/camel/content/recipient-list.html Thu Apr 21 13:20:48 
2016
@@ -86,7 +86,7 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h3 
id="RecipientList-RecipientList">Recipient List</h3><p>The <a shape="rect" 
class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/RecipientList.html"; 
rel="nofollow">Recipient List</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> allows you to 
route messages to a number of dynamically specified recipients.</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif"; 
data-image-src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif";></span></p><p>The
 recipients will receive a copy of the <strong>same</strong> <a shape="rect" 
href="exchange.html">Exchange</a>, and Camel will execute them 
sequentially.</p><h3 id="RecipientList-Options">Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbod
 y><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th 
colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>delimiter</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>,</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Delimiter used if the <a 
shape="rect" href="expression.html">Expression</a> returned multiple endpoints. 
<strong>Camel 2.13</strong> can be disabled using "false"</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>An <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html";>Aggregatio
 nStrategy</a> that will assemble the replies from recipients into a single 
outgoing message from the <a shape="rect" href="recipient-list.html">Recipient 
List</a>. By default Camel will use the last reply as the outgoing message. 
From <strong>Camel 2.12</strong> onwards you can also use a POJO as the 
<code>AggregationStrategy</code>, see the <a shape="rect" 
href="aggregator2.html">Aggregator</a> page for more details. If an exception 
is thrown from the aggregate method in the AggregationStrategy, then by 
default, that exception&#160;is not handled by the error handler. The error 
handler can be enabled to react if enabling the shareUnitOfWork 
option.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodName</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12:</strong> This option can be used to 
explicitly declare the method name to use, when using P
 OJOs as the <code>AggregationStrategy</code>. See the <a shape="rect" 
href="aggregator2.html">Aggregator</a><span>&#160;</span>page for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodAllowNull</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> If 
this option is <code>false</code> then the aggregate method is not used if 
there was no data to enrich. If this option is <code>true</code> then 
<code>null</code> is used as the <code>oldExchange</code> (when no data to 
enrich), when using POJOs as the <code>AggregationStrategy</code>. See the <a 
shape="rect" href="aggregator2.html">Aggregator</a> page for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelProcessing</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colsp
 an="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.2:</strong> If 
enabled, messages are sent to the recipients concurrently. Note that the 
calling thread will still wait until all messages have been fully processed 
before it continues; it is the sending and processing of replies from 
recipients which happens in parallel.</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelAggregate</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.14:</strong> If enabled 
then the <code>aggregate</code> method on <code>AggregationStrategy</code> can 
be called concurrently. Notice that this would require the implementation of 
<code>AggregationStrategy</code> to be implemented as thread-safe. By default 
this is <code>false</code> meaning that Camel synchronizes the call to the 
<code>aggre
 gate</code> method. Though in some use-cases this can be used to archive 
higher performance when the <code>AggregationStrategy</code> is implemented as 
thread-safe.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>executorServiceRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.2:</strong> A custom <a shape="rect" 
href="threading-model.html">Thread Pool</a> to use for parallel processing. 
Note that enabling this option implies parallel processing, so you need not 
enable that option as well.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>stopOnException</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.2:</strong> Whether to 
immediately stop processing when an exception occurs. If disabled, Camel will 
send the message 
 to all recipients regardless of any individual failures. You can process 
exceptions in an <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html";>AggregationStrategy</a>
 implementation, which supports full control of error 
handling.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>ignoreInvalidEndpoints</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> 
Whether to ignore an endpoint URI that could not be resolved. If disabled, 
Camel will throw an exception identifying the invalid endpoint 
URI.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>streaming</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Ca
 mel 2.5:</strong> If enabled, Camel will process replies out-of-order - that 
is, in the order received in reply from each recipient. If disabled, Camel will 
process replies in the same order as specified by the <a shape="rect" 
href="expression.html">Expression</a>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>timeout</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> Specifies a 
processing timeout in milliseconds. If the <a shape="rect" 
href="recipient-list.html">Recipient List</a> hasn't been able to send and 
process all replies within this timeframe, then the timeout triggers and the <a 
shape="rect" href="recipient-list.html">Recipient List</a> breaks out, with 
message flow continuing to the next element. Note that if you provide a <a 
shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/
 
camel/processor/aggregate/TimeoutAwareAggregationStrategy.html">TimeoutAwareAggregationStrategy</a>,
 its <code>timeout</code> method is invoked before breaking out. 
<strong>Beware:</strong> If the timeout is reached with running tasks still 
remaining, certain tasks (for which it is difficult for Camel to shut down in a 
graceful manner) may continue to run. So use this option with caution. We may 
be able to improve this functionality in future Camel 
releases.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>onPrepareRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.8:</strong> A custom <a shape="rect" 
href="processor.html">Processor</a> to prepare the copy of the <a shape="rect" 
href="exchange.html">Exchange</a> each recipient will receive. This allows you 
to perform arbitrary transformations, such as deep-cloning the message payload 
(or any other custom l
 ogic).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>shareUnitOfWork</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Whether the 
unit of work should be shared. See <a shape="rect" 
href="splitter.html#Splitter-Sharingunitofwork">the same option on Splitter</a> 
for more details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>cacheSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.13.1/2.12.4:</strong> 
Allows to configure the cache size for the <code>ProducerCache</code> which 
caches producers for reuse in the recipient list. Will by default use the 
default cache size which is 1000. Setting the value to -1 allows to turn off 
the cache completely.</p></td></tr></tbody></table></div></div><h4 id
 ="RecipientList-StaticRecipientList">Static Recipient List</h4><p>The 
following example shows how to route a request from an input 
<strong>queue:a</strong> endpoint to a static list of 
destinations</p><p><strong>Using Annotations</strong><br clear="none"> You can 
use the <a shape="rect" href="recipientlist-annotation.html">RecipientList 
Annotation</a> on a POJO to create a Dynamic Recipient List. For more details 
see the <a shape="rect" href="bean-integration.html">Bean 
Integration</a>.</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">
+<div class="wiki-content maincontent"><h3 
id="RecipientList-RecipientList">Recipient List</h3><p>The <a shape="rect" 
class="external-link" 
href="http://www.enterpriseintegrationpatterns.com/RecipientList.html"; 
rel="nofollow">Recipient List</a> from the <a shape="rect" 
href="enterprise-integration-patterns.html">EIP patterns</a> allows you to 
route messages to a number of dynamically specified recipients.</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif"; 
data-image-src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif";></span></p><p>The
 recipients will receive a copy of the <strong>same</strong> <a shape="rect" 
href="exchange.html">Exchange</a>, and Camel will execute them 
sequentially.</p><h3 id="RecipientList-Options">Options</h3><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbod
 y><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th 
colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>delimiter</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>,</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Delimiter used if the <a 
shape="rect" href="expression.html">Expression</a> returned multiple endpoints 
(like "<span style="color: rgb(0,0,0);">direct:foo,direct:bar"</span>). From 
<strong>Camel 2.13</strong> onwards this can be disabled by setting delimiter 
to "false".</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>An <a shape="rect" class="external-link" 
href="http://camel.apache.or
 
g/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html">AggregationStrategy</a>
 that will assemble the replies from recipients into a single outgoing message 
from the <a shape="rect" href="recipient-list.html">Recipient List</a>. By 
default Camel will use the last reply as the outgoing message. From 
<strong>Camel 2.12</strong> onwards you can also use a POJO as the 
<code>AggregationStrategy</code>, see the <a shape="rect" 
href="aggregator2.html">Aggregator</a> page for more details. If an exception 
is thrown from the aggregate method in the AggregationStrategy, then by 
default, that exception&#160;is not handled by the error handler. The error 
handler can be enabled to react if enabling the shareUnitOfWork 
option.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodName</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><st
 rong>Camel 2.12:</strong> This option can be used to explicitly declare the 
method name to use, when using POJOs as the <code>AggregationStrategy</code>. 
See the <a shape="rect" 
href="aggregator2.html">Aggregator</a><span>&#160;</span>page for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>strategyMethodAllowNull</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> If 
this option is <code>false</code> then the aggregate method is not used if 
there was no data to enrich. If this option is <code>true</code> then 
<code>null</code> is used as the <code>oldExchange</code> (when no data to 
enrich), when using POJOs as the <code>AggregationStrategy</code>. See the <a 
shape="rect" href="aggregator2.html">Aggregator</a> page for more 
details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelProces
 sing</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.2:</strong> If enabled, messages are 
sent to the recipients concurrently. Note that the calling thread will still 
wait until all messages have been fully processed before it continues; it is 
the sending and processing of replies from recipients which happens in 
parallel.</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>parallelAggregate</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.14:</strong> If enabled 
then the <code>aggregate</code> method on <code>AggregationStrategy</code> can 
be called concurrently. Notice that this would require the implementation of 
<code>AggregationStrategy</code> to be implemented as th
 read-safe. By default this is <code>false</code> meaning that Camel 
synchronizes the call to the <code>aggregate</code> method. Though in some 
use-cases this can be used to archive higher performance when the 
<code>AggregationStrategy</code> is implemented as 
thread-safe.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>executorServiceRef</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.2:</strong> A custom <a shape="rect" 
href="threading-model.html">Thread Pool</a> to use for parallel processing. 
Note that enabling this option implies parallel processing, so you need not 
enable that option as well.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>stopOnException</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.2:</strong
 > Whether to immediately stop processing when an exception occurs. If 
 > disabled, Camel will send the message to all recipients regardless of any 
 > individual failures. You can process exceptions in an <a shape="rect" 
 > class="external-link" 
 > href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html";>AggregationStrategy</a>
 >  implementation, which supports full control of error 
 > handling.</p></td></tr><tr><td colspan="1" rowspan="1" 
 > class="confluenceTd"><p><code>ignoreInvalidEndpoints</code></p></td><td 
 > colspan="1" rowspan="1" 
 > class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
 > rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Whether to 
 > ignore an endpoint URI that could not be resolved. If disabled, Camel will 
 > throw an exception identifying the invalid endpoint 
 > URI.</p></td></tr><tr><td colspan="1" rowspan="1" 
 > class="confluenceTd"><p><code>streaming</code></p></td><td colspan="1" 
 > rowspan="1" class
 ="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.5:</strong> If enabled, Camel will 
process replies out-of-order - that is, in the order received in reply from 
each recipient. If disabled, Camel will process replies in the same order as 
specified by the <a shape="rect" href="expression.html">Expression</a>. <span 
style="color: rgb(0,0,0);">So this specifies whether the response messages are 
aggregated as they come in, or</span><span> i</span><span style="color: 
rgb(0,0,0);">n the exact order as the recipient list was evaluated. </span>Only 
relevant if you enable parallelProcessing.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>timeout</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> Specifies a 
processing timeout in milliseconds. If the <a shape="rect" 
href="recipient-list.html">
 Recipient List</a> hasn't been able to send and process all replies within 
this timeframe, then the timeout triggers and the <a shape="rect" 
href="recipient-list.html">Recipient List</a> breaks out, with message flow 
continuing to the next element. Note that if you provide a <a shape="rect" 
class="external-link" 
href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.html";>TimeoutAwareAggregationStrategy</a>,
 its <code>timeout</code> method is invoked before breaking out. 
<strong>Beware:</strong> If the timeout is reached with running tasks still 
remaining, certain tasks (for which it is difficult for Camel to shut down in a 
graceful manner) may continue to run. So use this option with caution. We may 
be able to improve this functionality in future Camel 
releases.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>onPrepareRef</code></p></td><td colspan="1" 
rowspan="1" class="confluen
 ceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.8:</strong> A custom <a shape="rect" 
href="processor.html">Processor</a> to prepare the copy of the <a shape="rect" 
href="exchange.html">Exchange</a> each recipient will receive. This allows you 
to perform arbitrary transformations, such as deep-cloning the message payload 
(or any other custom logic).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>shareUnitOfWork</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Whether the 
unit of work should be shared. See <a shape="rect" 
href="splitter.html#Splitter-Sharingunitofwork">the same option on Splitter</a> 
for more details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>cacheSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>1000</code></p></t
 d><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
2.13.1/2.12.4:</strong> Allows to configure the cache size for the 
<code>ProducerCache</code> which caches producers for reuse in the recipient 
list. Will by default use the default cache size which is 1000. Setting the 
value to -1 allows to turn off the cache 
completely.</p></td></tr></tbody></table></div></div><h4 
id="RecipientList-StaticRecipientList">Static Recipient List</h4><p>The 
following example shows how to route a request from an input 
<strong>queue:a</strong> endpoint to a static list of 
destinations</p><p><strong>Using Annotations</strong><br clear="none"> You can 
use the <a shape="rect" href="recipientlist-annotation.html">RecipientList 
Annotation</a> on a POJO to create a Dynamic Recipient List. For more details 
see the <a shape="rect" href="bean-integration.html">Bean 
Integration</a>.</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"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
     public void configure() {
@@ -175,7 +175,7 @@ from(&quot;direct:a&quot;).recipientList
        &lt;/recipientList&gt;
    &lt;/route&gt;
 ]]></script>
-</div></div><p><strong>Note:</strong> You can combine 
<code>parallelProcessing</code> and <code>stopOnException</code> and have them 
both <code>true</code>.</p><h3 id="RecipientList-Ignoreinvalidendpoints">Ignore 
invalid endpoints</h3><p><strong>Available as of Camel 2.3</strong></p><p>The 
<a shape="rect" href="recipient-list.html">Recipient List</a> now supports 
<code>ignoreInvalidEndpoints</code> which the <a shape="rect" 
href="routing-slip.html">Routing Slip</a> also supports. You can use it to skip 
endpoints which are invalid.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p><strong>Note:</strong> You can combine 
<code>parallelProcessing</code> and <code>stopOnException</code> and have them 
both <code>true</code>.</p><h3 id="RecipientList-Ignoreinvalidendpoints">Ignore 
invalid endpoints</h3><p><strong>Available as of Camel 2.3</strong></p><p>The 
<a shape="rect" href="recipient-list.html">Recipient List</a> now supports 
<code>ignoreInvalidEndpoints</code> (like the <a shape="rect" 
href="routing-slip.html">Routing Slip</a>). You can use it to skip endpoints 
which are invalid.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[    
from(&quot;direct:a&quot;).recipientList(header(&quot;myHeader&quot;)).ignoreInvalidEndpoints();
 ]]></script>
 </div></div><p>And in Spring XML it is an attribute on the recipient list 
tag.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
@@ -202,7 +202,7 @@ from(&quot;direct:a&quot;).recipientList
 
    &lt;bean id=&quot;myStrategy&quot; 
class=&quot;com.mycompany.MyOwnAggregationStrategy&quot;/&gt;
 ]]></script>
-</div></div><h4 
id="RecipientList-KnowingwhichendpointwhenusingcustomAggregationStrategy">Knowing
 which endpoint when using custom 
<code>AggregationStrategy</code></h4><p><strong>Available as of Camel 
2.12</strong></p><p>When using a custom <code>AggregationStrategy</code> then 
the <code>aggregate</code> method is always invoked in sequential order (also 
if parallel processing is enabled) of the endpoints the <a shape="rect" 
href="recipient-list.html">Recipient List</a> is using. However from Camel 2.12 
onwards this is easier to know as the <code>newExchange</code> <a shape="rect" 
href="exchange.html">Exchange</a> has a property stored (key is 
<code>Exchange.RECIPIENT_LIST_ENDPOINT</code> with the uri of the <a 
shape="rect" href="endpoint.html">Endpoint</a>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h4 
id="RecipientList-KnowingwhichendpointwhenusingcustomAggregationStrategy">Knowing
 which endpoint when using custom 
<code>AggregationStrategy</code></h4><p><strong>Available as of Camel 
2.12</strong></p><p>When using a custom <code>AggregationStrategy</code> then 
the <code>aggregate</code> method is always invoked in sequential order (also 
if parallel processing is enabled) of the endpoints the <a shape="rect" 
href="recipient-list.html">Recipient List</a> is using. However from Camel 2.12 
onwards this is easier to know as the <code>newExchange</code> <a shape="rect" 
href="exchange.html">Exchange</a>&#160;now has a property stored (key is 
<code>Exchange.RECIPIENT_LIST_ENDPOINT</code> with the uri of the <a 
shape="rect" href="endpoint.html">Endpoint</a>. So you know which endpoint you 
are aggregating from. The code block shows how to access this property in your 
<a shape="rect" href="aggregator2.html">Aggregator</a>.&#160;</p><div 
class="code panel pdl" style="border-wi
 dth: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[    @Override
     public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
         String uri = newExchange.getProperty(Exchange.RECIPIENT_LIST_ENDPOINT, 
String.class);


Reply via email to