camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r811786 [1/2] - in /websites/production/camel/content: aggregator2.html book-in-one-page.html book-pattern-appendix.html cache/main.pageCache camel-2100-release.html
Date Sat, 07 Apr 2012 08:20:51 GMT
Author: buildbot
Date: Sat Apr  7 08:20:51 2012
New Revision: 811786

Log:
Production update by buildbot for camel

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

Modified: websites/production/camel/content/aggregator2.html
==============================================================================
--- websites/production/camel/content/aggregator2.html (original)
+++ websites/production/camel/content/aggregator2.html Sat Apr  7 08:20:51 2012
@@ -88,7 +88,7 @@
 <h3><a shape="rect" name="Aggregator2-Aggregatoroptions"></a>Aggregator options</h3>
 <p>The aggregator supports the following options:</p>
 <div class="confluenceTableSmall"><div class="table-wrap">
-<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Option </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> correlationExpression </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <a shape="rect" href="expression.html" title="Expression">Expression</a> which evaluates the correlation key to use for aggregation. The <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the <tt>ignoreBadCorrelationKeys</tt> option. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationStrategy </td><td colspan="1" rowspan="1" class="confluenceTd">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <tt>AggregationStrategy</tt> which is used to <em>merge</em> the incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> with the existing already merged exchanges. At first call the <tt>oldExchange</tt> parameter is <tt>null</tt>. On subsequent invocations the <tt>oldExchange</tt> contains the merged exchanges and <tt>newExchange</tt> is of course the new incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> strategyRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to lookup the <tt>AggregationStrategy</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionSize </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Number 
 of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a size dynamically - will use <tt>Integer</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Time in millis that an aggregated exchange should be inactive before its complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a timeout dynamically - will use <tt>Long</tt> as result. If both are set Camel will fallba
 ck to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. You cannot use this option together with completionInterval, only one of the two can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionInterval </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionPredicate </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> to indicate when an aggregat
 ed exchange is complete. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionFromBatchConsumer </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> This option is if the exchanges are coming from a <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. Then when enabled the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> will use the batch size determined by the <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a> in the message header <tt>CamelBatchSize</tt>. See more details at <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. This can be used to aggregate all files consumed from a <a shape="rect" href="file2.html" title="File2">File</a> endpoint in that given poll. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> forceCompletionOnStop </td>
 <td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9</b> Indicates to complete all current aggregated exchanges when the context is stopped </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> eagerCheckCompletion </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to eager check for completion when a new incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> has been received. This option influences the behavior of the <tt>completionPredicate</tt> option as the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> being passed in changes accordingly. When <tt>false</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>aggregated</em> Exchange which m
 eans any information you may store on the aggregated Exchange from the <tt>AggregationStrategy</tt> is available for the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a>. When <tt>true</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>incoming</em> <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, which means you can access data from the incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> groupExchanges </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> If enabled then Camel will group all aggregated Exchanges into a single combined <tt>org.apache.camel.impl.GroupedExchange</tt> holder class that holds all the aggregated Exchanges. And as a result only one Exchange is being sent out from the aggregator. Can be used
  to combine many incoming Exchanges into a single output Exchange without coding a custom <tt>AggregationStrategy</tt> yourself. <b>Important:</b> This option does <b>not</b> support persistant repository with the aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> ignoreInvalidCorrelationKeys </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to ignore correlation keys which could not be evaluated to a value. By default Camel will throw an Exception, but you can enable this option and ignore the situation instead. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> closeCorrelationKeyOnCompletion </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not too <em>late</em> Exchanges should be accepted or not. You can enable this to indicate that if a correlation key has already been
  completed, then any new exchanges with the same correlation key be denied. Camel will then throw a <tt>closedCorrelationKeyException</tt> exception. When using this option you pass in a <tt>integer</tt> which is a number for a LRUCache which keeps that last X number of closed correlation keys. You can pass in 0 or a negative value to indicate a unbounded cache. By passing in a number you are ensured that cache won't grow too big if you use a log of different correlation keys. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> discardOnCompletionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.5:</b> Whether or not exchanges which complete due to a timeout should be discarded. If enabled then when a timeout occurs the aggregated message will <b>not</b> be sent out but dropped (discarded). </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationReposi
 tory </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Allows you to plugin you own implementation of <tt>org.apache.camel.spi.AggregationRepository</tt> which keeps track of the current inflight aggregated exchanges. Camel uses by default a memory based implementation. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepositoryRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>aggregationRepository</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> parallelProcessing </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Cam
 el should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> If using <tt>parallelProcessing</tt> you can specify a custom thread pool to be used. In fact also if you are not using <tt>parallelProcessing</tt> this custom thread pool is used to send out aggregated exchanges as well. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>executorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerEx
 ecutorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> If using either of the <tt>completionTimeout</tt>, <tt>completionTimeoutExpression</tt>, or <tt>completionInterval</tt> options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> Reference to lookup a <tt>timeoutCheckerExecutorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Option </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> correlationExpression </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <a shape="rect" href="expression.html" title="Expression">Expression</a> which evaluates the correlation key to use for aggregation. The <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the <tt>ignoreBadCorrelationKeys</tt> option. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationStrategy </td><td colspan="1" rowspan="1" class="confluenceTd">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <tt>AggregationStrategy</tt> which is used to <em>merge</em> the incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> with the existing already merged exchanges. At first call the <tt>oldExchange</tt> parameter is <tt>null</tt>. On subsequent invocations the <tt>oldExchange</tt> contains the merged exchanges and <tt>newExchange</tt> is of course the new incoming Exchange. From <b>Camel 2.9.2</b> onwards the strategy can also be a <tt>TimeoutAwareAggregationStrategy</tt> implementation, supporting the timeout callback, see further below for more details. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> strategyRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to lookup the <tt>AggregationStrategy</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><t
 d colspan="1" rowspan="1" class="confluenceTd"> completionSize </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Number of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a size dynamically - will use <tt>Integer</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Time in millis that an aggregated exchange should be inactive before its complete. This option can be set as either a fixed value or using an <a shape
 ="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a timeout dynamically - will use <tt>Long</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. You cannot use this option together with completionInterval, only one of the two can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionInterval </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionPredicate </td><td colspan="1" rowspan="
 1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> to indicate when an aggregated exchange is complete. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionFromBatchConsumer </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> This option is if the exchanges are coming from a <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. Then when enabled the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> will use the batch size determined by the <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a> in the message header <tt>CamelBatchSize</tt>. See more details at <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. This can be used to aggregate all files consumed
  from a <a shape="rect" href="file2.html" title="File2">File</a> endpoint in that given poll. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> forceCompletionOnStop </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9</b> Indicates to complete all current aggregated exchanges when the context is stopped </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> eagerCheckCompletion </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to eager check for completion when a new incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> has been received. This option influences the behavior of the <tt>completionPredicate</tt> option as the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> being passed in changes accordingly. When <tt>false</tt> the <a shape=
 "rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>aggregated</em> Exchange which means any information you may store on the aggregated Exchange from the <tt>AggregationStrategy</tt> is available for the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a>. When <tt>true</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>incoming</em> <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, which means you can access data from the incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> groupExchanges </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> If enabled then Camel will group all aggregated Exchanges into a single combined 
 <tt>org.apache.camel.impl.GroupedExchange</tt> holder class that holds all the aggregated Exchanges. And as a result only one Exchange is being sent out from the aggregator. Can be used to combine many incoming Exchanges into a single output Exchange without coding a custom <tt>AggregationStrategy</tt> yourself. <b>Important:</b> This option does <b>not</b> support persistant repository with the aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> ignoreInvalidCorrelationKeys </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to ignore correlation keys which could not be evaluated to a value. By default Camel will throw an Exception, but you can enable this option and ignore the situation instead. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> closeCorrelationKeyOnCompletion </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colsp
 an="1" rowspan="1" class="confluenceTd"> Whether or not too <em>late</em> Exchanges should be accepted or not. You can enable this to indicate that if a correlation key has already been completed, then any new exchanges with the same correlation key be denied. Camel will then throw a <tt>closedCorrelationKeyException</tt> exception. When using this option you pass in a <tt>integer</tt> which is a number for a LRUCache which keeps that last X number of closed correlation keys. You can pass in 0 or a negative value to indicate a unbounded cache. By passing in a number you are ensured that cache won't grow too big if you use a log of different correlation keys. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> discardOnCompletionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.5:</b> Whether or not exchanges which complete due to a timeout should be discarded. If enabled
  then when a timeout occurs the aggregated message will <b>not</b> be sent out but dropped (discarded). </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepository </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Allows you to plugin you own implementation of <tt>org.apache.camel.spi.AggregationRepository</tt> which keeps track of the current inflight aggregated exchanges. Camel uses by default a memory based implementation. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepositoryRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>aggregationRepository</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> parallelProcessing </td><td colspan="1" rowspan="1" class="confluenceTd"
 > <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Camel should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> If using <tt>parallelProcessing</tt> you can specify a custom thread pool to be used. In fact also if you are not using <tt>parallelProcessing</tt> this custom thread pool is used to send out aggregated exchanges as well. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to loo
 kup a <tt>executorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> If using either of the <tt>completionTimeout</tt>, <tt>completionTimeoutExpression</tt>, or <tt>completionInterval</tt> options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> Reference to lookup a <tt>timeoutCheckerExecutorService</tt> in the <a shape="rect" href="registry.html
 " title="Registry">Registry</a> </td></tr></tbody></table>
 </div>
 </div>
 
@@ -194,6 +194,11 @@ If you need persistent repository then y
 </pre>
 </div></div>
 
+<h4><a shape="rect" name="Aggregator2-UsingTimeoutAwareAggregationStrategy"></a>Using TimeoutAwareAggregationStrategy</h4>
+<p><b>Available as of Camel 2.9.2</b></p>
+
+<p>If your aggregation strategy implements <tt>TimeoutAwareAggregationStrategy</tt>, then Camel will invoke the <tt>timeout</tt> method when the timeout occurs. Notice that the values for index, and total parameters will be -1, and the timeout parameter will only be provided if configured as a fixed value.</p>
+
 <h4><a shape="rect" name="Aggregator2-UsingcompletionSize"></a>Using completionSize</h4>
 <p>In this example we want to aggregate all incoming messages and when we have 3 messages aggregated (in the same correlation group) we want the aggregation to complete. This is done using the <tt>completionSize</tt> option as shown:</p>
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">

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 Apr  7 08:20:51 2012
@@ -15276,7 +15276,7 @@ from(<span class="code-quote">"direct:st
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java">from(<span class="code-quote">"direct:start"</span>)
     <span class="code-comment">// use a bean as the dynamic router
-</span>    .dynamicRouter(bean(DynamicRouterTest.class, <span class="code-quote">"slip"</span>));
+</span>    .dynamicRouter(method(DynamicRouterTest.class, <span class="code-quote">"slip"</span>));
 </pre>
 </div></div>
 
@@ -16269,7 +16269,7 @@ from(<span class="code-quote">"direct:li
 <h3><a shape="rect" name="BookInOnePage-Aggregatoroptions"></a>Aggregator options</h3>
 <p>The aggregator supports the following options:</p>
 <div class="confluenceTableSmall"><div class="table-wrap">
-<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Option </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> correlationExpression </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <a shape="rect" href="expression.html" title="Expression">Expression</a> which evaluates the correlation key to use for aggregation. The <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the <tt>ignoreBadCorrelationKeys</tt> option. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationStrategy </td><td colspan="1" rowspan="1" class="confluenceTd">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <tt>AggregationStrategy</tt> which is used to <em>merge</em> the incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> with the existing already merged exchanges. At first call the <tt>oldExchange</tt> parameter is <tt>null</tt>. On subsequent invocations the <tt>oldExchange</tt> contains the merged exchanges and <tt>newExchange</tt> is of course the new incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> strategyRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to lookup the <tt>AggregationStrategy</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionSize </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Number 
 of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a size dynamically - will use <tt>Integer</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Time in millis that an aggregated exchange should be inactive before its complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a timeout dynamically - will use <tt>Long</tt> as result. If both are set Camel will fallba
 ck to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. You cannot use this option together with completionInterval, only one of the two can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionInterval </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionPredicate </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> to indicate when an aggregat
 ed exchange is complete. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionFromBatchConsumer </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> This option is if the exchanges are coming from a <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. Then when enabled the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> will use the batch size determined by the <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a> in the message header <tt>CamelBatchSize</tt>. See more details at <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. This can be used to aggregate all files consumed from a <a shape="rect" href="file2.html" title="File2">File</a> endpoint in that given poll. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> forceCompletionOnStop </td>
 <td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9</b> Indicates to complete all current aggregated exchanges when the context is stopped </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> eagerCheckCompletion </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to eager check for completion when a new incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> has been received. This option influences the behavior of the <tt>completionPredicate</tt> option as the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> being passed in changes accordingly. When <tt>false</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>aggregated</em> Exchange which m
 eans any information you may store on the aggregated Exchange from the <tt>AggregationStrategy</tt> is available for the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a>. When <tt>true</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>incoming</em> <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, which means you can access data from the incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> groupExchanges </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> If enabled then Camel will group all aggregated Exchanges into a single combined <tt>org.apache.camel.impl.GroupedExchange</tt> holder class that holds all the aggregated Exchanges. And as a result only one Exchange is being sent out from the aggregator. Can be used
  to combine many incoming Exchanges into a single output Exchange without coding a custom <tt>AggregationStrategy</tt> yourself. <b>Important:</b> This option does <b>not</b> support persistant repository with the aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> ignoreInvalidCorrelationKeys </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to ignore correlation keys which could not be evaluated to a value. By default Camel will throw an Exception, but you can enable this option and ignore the situation instead. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> closeCorrelationKeyOnCompletion </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not too <em>late</em> Exchanges should be accepted or not. You can enable this to indicate that if a correlation key has already been
  completed, then any new exchanges with the same correlation key be denied. Camel will then throw a <tt>closedCorrelationKeyException</tt> exception. When using this option you pass in a <tt>integer</tt> which is a number for a LRUCache which keeps that last X number of closed correlation keys. You can pass in 0 or a negative value to indicate a unbounded cache. By passing in a number you are ensured that cache won't grow too big if you use a log of different correlation keys. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> discardOnCompletionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.5:</b> Whether or not exchanges which complete due to a timeout should be discarded. If enabled then when a timeout occurs the aggregated message will <b>not</b> be sent out but dropped (discarded). </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationReposi
 tory </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Allows you to plugin you own implementation of <tt>org.apache.camel.spi.AggregationRepository</tt> which keeps track of the current inflight aggregated exchanges. Camel uses by default a memory based implementation. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepositoryRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>aggregationRepository</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> parallelProcessing </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Cam
 el should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> If using <tt>parallelProcessing</tt> you can specify a custom thread pool to be used. In fact also if you are not using <tt>parallelProcessing</tt> this custom thread pool is used to send out aggregated exchanges as well. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>executorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerEx
 ecutorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> If using either of the <tt>completionTimeout</tt>, <tt>completionTimeoutExpression</tt>, or <tt>completionInterval</tt> options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> Reference to lookup a <tt>timeoutCheckerExecutorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Option </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> correlationExpression </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <a shape="rect" href="expression.html" title="Expression">Expression</a> which evaluates the correlation key to use for aggregation. The <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the <tt>ignoreBadCorrelationKeys</tt> option. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationStrategy </td><td colspan="1" rowspan="1" class="confluenceTd">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <tt>AggregationStrategy</tt> which is used to <em>merge</em> the incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> with the existing already merged exchanges. At first call the <tt>oldExchange</tt> parameter is <tt>null</tt>. On subsequent invocations the <tt>oldExchange</tt> contains the merged exchanges and <tt>newExchange</tt> is of course the new incoming Exchange. From <b>Camel 2.9.2</b> onwards the strategy can also be a <tt>TimeoutAwareAggregationStrategy</tt> implementation, supporting the timeout callback, see further below for more details. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> strategyRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to lookup the <tt>AggregationStrategy</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><t
 d colspan="1" rowspan="1" class="confluenceTd"> completionSize </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Number of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a size dynamically - will use <tt>Integer</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Time in millis that an aggregated exchange should be inactive before its complete. This option can be set as either a fixed value or using an <a shape
 ="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a timeout dynamically - will use <tt>Long</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. You cannot use this option together with completionInterval, only one of the two can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionInterval </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionPredicate </td><td colspan="1" rowspan="
 1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> to indicate when an aggregated exchange is complete. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionFromBatchConsumer </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> This option is if the exchanges are coming from a <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. Then when enabled the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> will use the batch size determined by the <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a> in the message header <tt>CamelBatchSize</tt>. See more details at <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. This can be used to aggregate all files consumed
  from a <a shape="rect" href="file2.html" title="File2">File</a> endpoint in that given poll. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> forceCompletionOnStop </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9</b> Indicates to complete all current aggregated exchanges when the context is stopped </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> eagerCheckCompletion </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to eager check for completion when a new incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> has been received. This option influences the behavior of the <tt>completionPredicate</tt> option as the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> being passed in changes accordingly. When <tt>false</tt> the <a shape=
 "rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>aggregated</em> Exchange which means any information you may store on the aggregated Exchange from the <tt>AggregationStrategy</tt> is available for the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a>. When <tt>true</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>incoming</em> <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, which means you can access data from the incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> groupExchanges </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> If enabled then Camel will group all aggregated Exchanges into a single combined 
 <tt>org.apache.camel.impl.GroupedExchange</tt> holder class that holds all the aggregated Exchanges. And as a result only one Exchange is being sent out from the aggregator. Can be used to combine many incoming Exchanges into a single output Exchange without coding a custom <tt>AggregationStrategy</tt> yourself. <b>Important:</b> This option does <b>not</b> support persistant repository with the aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> ignoreInvalidCorrelationKeys </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to ignore correlation keys which could not be evaluated to a value. By default Camel will throw an Exception, but you can enable this option and ignore the situation instead. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> closeCorrelationKeyOnCompletion </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colsp
 an="1" rowspan="1" class="confluenceTd"> Whether or not too <em>late</em> Exchanges should be accepted or not. You can enable this to indicate that if a correlation key has already been completed, then any new exchanges with the same correlation key be denied. Camel will then throw a <tt>closedCorrelationKeyException</tt> exception. When using this option you pass in a <tt>integer</tt> which is a number for a LRUCache which keeps that last X number of closed correlation keys. You can pass in 0 or a negative value to indicate a unbounded cache. By passing in a number you are ensured that cache won't grow too big if you use a log of different correlation keys. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> discardOnCompletionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.5:</b> Whether or not exchanges which complete due to a timeout should be discarded. If enabled
  then when a timeout occurs the aggregated message will <b>not</b> be sent out but dropped (discarded). </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepository </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Allows you to plugin you own implementation of <tt>org.apache.camel.spi.AggregationRepository</tt> which keeps track of the current inflight aggregated exchanges. Camel uses by default a memory based implementation. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepositoryRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>aggregationRepository</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> parallelProcessing </td><td colspan="1" rowspan="1" class="confluenceTd"
 > <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Camel should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> If using <tt>parallelProcessing</tt> you can specify a custom thread pool to be used. In fact also if you are not using <tt>parallelProcessing</tt> this custom thread pool is used to send out aggregated exchanges as well. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to loo
 kup a <tt>executorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> If using either of the <tt>completionTimeout</tt>, <tt>completionTimeoutExpression</tt>, or <tt>completionInterval</tt> options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> Reference to lookup a <tt>timeoutCheckerExecutorService</tt> in the <a shape="rect" href="registry.html
 " title="Registry">Registry</a> </td></tr></tbody></table>
 </div>
 </div>
 
@@ -16375,6 +16375,11 @@ If you need persistent repository then y
 </pre>
 </div></div>
 
+<h4><a shape="rect" name="BookInOnePage-UsingTimeoutAwareAggregationStrategy"></a>Using TimeoutAwareAggregationStrategy</h4>
+<p><b>Available as of Camel 2.9.2</b></p>
+
+<p>If your aggregation strategy implements <tt>TimeoutAwareAggregationStrategy</tt>, then Camel will invoke the <tt>timeout</tt> method when the timeout occurs. Notice that the values for index, and total parameters will be -1, and the timeout parameter will only be provided if configured as a fixed value.</p>
+
 <h4><a shape="rect" name="BookInOnePage-UsingcompletionSize"></a>Using completionSize</h4>
 <p>In this example we want to aggregate all incoming messages and when we have 3 messages aggregated (in the same correlation group) we want the aggregation to complete. This is done using the <tt>completionSize</tt> option as shown:</p>
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">

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 Sat Apr  7 08:20:51 2012
@@ -1160,7 +1160,7 @@ from(<span class="code-quote">"direct:st
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java">from(<span class="code-quote">"direct:start"</span>)
     <span class="code-comment">// use a bean as the dynamic router
-</span>    .dynamicRouter(bean(DynamicRouterTest.class, <span class="code-quote">"slip"</span>));
+</span>    .dynamicRouter(method(DynamicRouterTest.class, <span class="code-quote">"slip"</span>));
 </pre>
 </div></div>
 
@@ -2153,7 +2153,7 @@ from(<span class="code-quote">"direct:li
 <h3><a shape="rect" name="BookPatternAppendix-Aggregatoroptions"></a>Aggregator options</h3>
 <p>The aggregator supports the following options:</p>
 <div class="confluenceTableSmall"><div class="table-wrap">
-<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Option </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> correlationExpression </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <a shape="rect" href="expression.html" title="Expression">Expression</a> which evaluates the correlation key to use for aggregation. The <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the <tt>ignoreBadCorrelationKeys</tt> option. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationStrategy </td><td colspan="1" rowspan="1" class="confluenceTd">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <tt>AggregationStrategy</tt> which is used to <em>merge</em> the incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> with the existing already merged exchanges. At first call the <tt>oldExchange</tt> parameter is <tt>null</tt>. On subsequent invocations the <tt>oldExchange</tt> contains the merged exchanges and <tt>newExchange</tt> is of course the new incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> strategyRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to lookup the <tt>AggregationStrategy</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionSize </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Number 
 of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a size dynamically - will use <tt>Integer</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Time in millis that an aggregated exchange should be inactive before its complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a timeout dynamically - will use <tt>Long</tt> as result. If both are set Camel will fallba
 ck to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. You cannot use this option together with completionInterval, only one of the two can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionInterval </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionPredicate </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> to indicate when an aggregat
 ed exchange is complete. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionFromBatchConsumer </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> This option is if the exchanges are coming from a <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. Then when enabled the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> will use the batch size determined by the <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a> in the message header <tt>CamelBatchSize</tt>. See more details at <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. This can be used to aggregate all files consumed from a <a shape="rect" href="file2.html" title="File2">File</a> endpoint in that given poll. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> forceCompletionOnStop </td>
 <td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9</b> Indicates to complete all current aggregated exchanges when the context is stopped </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> eagerCheckCompletion </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to eager check for completion when a new incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> has been received. This option influences the behavior of the <tt>completionPredicate</tt> option as the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> being passed in changes accordingly. When <tt>false</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>aggregated</em> Exchange which m
 eans any information you may store on the aggregated Exchange from the <tt>AggregationStrategy</tt> is available for the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a>. When <tt>true</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>incoming</em> <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, which means you can access data from the incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> groupExchanges </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> If enabled then Camel will group all aggregated Exchanges into a single combined <tt>org.apache.camel.impl.GroupedExchange</tt> holder class that holds all the aggregated Exchanges. And as a result only one Exchange is being sent out from the aggregator. Can be used
  to combine many incoming Exchanges into a single output Exchange without coding a custom <tt>AggregationStrategy</tt> yourself. <b>Important:</b> This option does <b>not</b> support persistant repository with the aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> ignoreInvalidCorrelationKeys </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to ignore correlation keys which could not be evaluated to a value. By default Camel will throw an Exception, but you can enable this option and ignore the situation instead. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> closeCorrelationKeyOnCompletion </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not too <em>late</em> Exchanges should be accepted or not. You can enable this to indicate that if a correlation key has already been
  completed, then any new exchanges with the same correlation key be denied. Camel will then throw a <tt>closedCorrelationKeyException</tt> exception. When using this option you pass in a <tt>integer</tt> which is a number for a LRUCache which keeps that last X number of closed correlation keys. You can pass in 0 or a negative value to indicate a unbounded cache. By passing in a number you are ensured that cache won't grow too big if you use a log of different correlation keys. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> discardOnCompletionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.5:</b> Whether or not exchanges which complete due to a timeout should be discarded. If enabled then when a timeout occurs the aggregated message will <b>not</b> be sent out but dropped (discarded). </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationReposi
 tory </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Allows you to plugin you own implementation of <tt>org.apache.camel.spi.AggregationRepository</tt> which keeps track of the current inflight aggregated exchanges. Camel uses by default a memory based implementation. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepositoryRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>aggregationRepository</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> parallelProcessing </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Cam
 el should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> If using <tt>parallelProcessing</tt> you can specify a custom thread pool to be used. In fact also if you are not using <tt>parallelProcessing</tt> this custom thread pool is used to send out aggregated exchanges as well. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>executorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerEx
 ecutorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> If using either of the <tt>completionTimeout</tt>, <tt>completionTimeoutExpression</tt>, or <tt>completionInterval</tt> options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> Reference to lookup a <tt>timeoutCheckerExecutorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Option </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> correlationExpression </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <a shape="rect" href="expression.html" title="Expression">Expression</a> which evaluates the correlation key to use for aggregation. The <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the <tt>ignoreBadCorrelationKeys</tt> option. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationStrategy </td><td colspan="1" rowspan="1" class="confluenceTd">&#
 160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Mandatory <tt>AggregationStrategy</tt> which is used to <em>merge</em> the incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> with the existing already merged exchanges. At first call the <tt>oldExchange</tt> parameter is <tt>null</tt>. On subsequent invocations the <tt>oldExchange</tt> contains the merged exchanges and <tt>newExchange</tt> is of course the new incoming Exchange. From <b>Camel 2.9.2</b> onwards the strategy can also be a <tt>TimeoutAwareAggregationStrategy</tt> implementation, supporting the timeout callback, see further below for more details. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> strategyRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to lookup the <tt>AggregationStrategy</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><t
 d colspan="1" rowspan="1" class="confluenceTd"> completionSize </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Number of messages aggregated before the aggregation is complete. This option can be set as either a fixed value or using an <a shape="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a size dynamically - will use <tt>Integer</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Time in millis that an aggregated exchange should be inactive before its complete. This option can be set as either a fixed value or using an <a shape
 ="rect" href="expression.html" title="Expression">Expression</a> which allows you to evaluate a timeout dynamically - will use <tt>Long</tt> as result. If both are set Camel will fallback to use the fixed value if the <a shape="rect" href="expression.html" title="Expression">Expression</a> result was <tt>null</tt> or <tt>0</tt>. You cannot use this option together with completionInterval, only one of the two can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionInterval </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionPredicate </td><td colspan="1" rowspan="
 1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> A <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> to indicate when an aggregated exchange is complete. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> completionFromBatchConsumer </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> This option is if the exchanges are coming from a <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. Then when enabled the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregator2</a> will use the batch size determined by the <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a> in the message header <tt>CamelBatchSize</tt>. See more details at <a shape="rect" href="batch-consumer.html" title="Batch Consumer">Batch Consumer</a>. This can be used to aggregate all files consumed
  from a <a shape="rect" href="file2.html" title="File2">File</a> endpoint in that given poll. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> forceCompletionOnStop </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9</b> Indicates to complete all current aggregated exchanges when the context is stopped </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> eagerCheckCompletion </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to eager check for completion when a new incoming <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> has been received. This option influences the behavior of the <tt>completionPredicate</tt> option as the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> being passed in changes accordingly. When <tt>false</tt> the <a shape=
 "rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>aggregated</em> Exchange which means any information you may store on the aggregated Exchange from the <tt>AggregationStrategy</tt> is available for the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a>. When <tt>true</tt> the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> passed in the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is the <em>incoming</em> <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, which means you can access data from the incoming Exchange. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> groupExchanges </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> If enabled then Camel will group all aggregated Exchanges into a single combined 
 <tt>org.apache.camel.impl.GroupedExchange</tt> holder class that holds all the aggregated Exchanges. And as a result only one Exchange is being sent out from the aggregator. Can be used to combine many incoming Exchanges into a single output Exchange without coding a custom <tt>AggregationStrategy</tt> yourself. <b>Important:</b> This option does <b>not</b> support persistant repository with the aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> ignoreInvalidCorrelationKeys </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Whether or not to ignore correlation keys which could not be evaluated to a value. By default Camel will throw an Exception, but you can enable this option and ignore the situation instead. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> closeCorrelationKeyOnCompletion </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colsp
 an="1" rowspan="1" class="confluenceTd"> Whether or not too <em>late</em> Exchanges should be accepted or not. You can enable this to indicate that if a correlation key has already been completed, then any new exchanges with the same correlation key be denied. Camel will then throw a <tt>closedCorrelationKeyException</tt> exception. When using this option you pass in a <tt>integer</tt> which is a number for a LRUCache which keeps that last X number of closed correlation keys. You can pass in 0 or a negative value to indicate a unbounded cache. By passing in a number you are ensured that cache won't grow too big if you use a log of different correlation keys. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> discardOnCompletionTimeout </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.5:</b> Whether or not exchanges which complete due to a timeout should be discarded. If enabled
  then when a timeout occurs the aggregated message will <b>not</b> be sent out but dropped (discarded). </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepository </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Allows you to plugin you own implementation of <tt>org.apache.camel.spi.AggregationRepository</tt> which keeps track of the current inflight aggregated exchanges. Camel uses by default a memory based implementation. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> aggregationRepositoryRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to lookup a <tt>aggregationRepository</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a>. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> parallelProcessing </td><td colspan="1" rowspan="1" class="confluenceTd"
 > <tt>false</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Camel should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool with 10 concurrent threads. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> If using <tt>parallelProcessing</tt> you can specify a custom thread pool to be used. In fact also if you are not using <tt>parallelProcessing</tt> this custom thread pool is used to send out aggregated exchanges as well. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> executorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> Reference to loo
 kup a <tt>executorService</tt> in the <a shape="rect" href="registry.html" title="Registry">Registry</a> </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorService </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> If using either of the <tt>completionTimeout</tt>, <tt>completionTimeoutExpression</tt>, or <tt>completionInterval</tt> options a background thread is created to check for the completion for every aggregator. Set this option to provide a custom thread pool to be used rather than creating a new thread for every aggregator. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> timeoutCheckerExecutorServiceRef </td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"> <b>Camel 2.9:</b> Reference to lookup a <tt>timeoutCheckerExecutorService</tt> in the <a shape="rect" href="registry.html
 " title="Registry">Registry</a> </td></tr></tbody></table>
 </div>
 </div>
 
@@ -2259,6 +2259,11 @@ If you need persistent repository then y
 </pre>
 </div></div>
 
+<h4><a shape="rect" name="BookPatternAppendix-UsingTimeoutAwareAggregationStrategy"></a>Using TimeoutAwareAggregationStrategy</h4>
+<p><b>Available as of Camel 2.9.2</b></p>
+
+<p>If your aggregation strategy implements <tt>TimeoutAwareAggregationStrategy</tt>, then Camel will invoke the <tt>timeout</tt> method when the timeout occurs. Notice that the values for index, and total parameters will be -1, and the timeout parameter will only be provided if configured as a fixed value.</p>
+
 <h4><a shape="rect" name="BookPatternAppendix-UsingcompletionSize"></a>Using completionSize</h4>
 <p>In this example we want to aggregate all incoming messages and when we have 3 messages aggregated (in the same correlation group) we want the aggregation to complete. This is done using the <tt>completionSize</tt> option as shown:</p>
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">

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



Mime
View raw message