Author: buildbot
Date: Fri Aug 15 10:17:51 2014
New Revision: 919418
Log:
Production update by buildbot for camel
Modified:
websites/production/camel/content/advanced-configuration-of-camelcontext-using-spring.html
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/camel-2140-release.html
websites/production/camel/content/facebook.html
websites/production/camel/content/routepolicy.html
Modified:
websites/production/camel/content/advanced-configuration-of-camelcontext-using-spring.html
==============================================================================
---
websites/production/camel/content/advanced-configuration-of-camelcontext-using-spring.html
(original)
+++
websites/production/camel/content/advanced-configuration-of-camelcontext-using-spring.html
Fri Aug 15 10:17:51 2014
@@ -86,7 +86,7 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2
id="AdvancedconfigurationofCamelContextusingSpring-AdvancedconfigurationofCamelContextusingSpring">Advanced
configuration of CamelContext using Spring</h2><p>When using Spring the
CamelContext can be pre configured based on defined beans in spring XML.<br
clear="none"> This wiki page documentes these features. Most of these features
requires <strong>Camel 2.0</strong>.</p><h3
id="AdvancedconfigurationofCamelContextusingSpring-Whatcanbeconfigured">What
can be configured</h3><p>The following functions can be configured:</p><ul
class="alternate"><li>Class resolvers</li><li>Lifecycle
factories</li><li>Registry for lookup</li><li><a shape="rect"
href="debugger.html">Debugger</a>, <a shape="rect"
href="tracer.html">Tracer</a>, <a shape="rect"
href="delay-interceptor.html">Delay</a> and <a shape="rect"
href="uuidgenerator.html">UuidGenerator</a></li><li><a shape="rect"
href="intercept.html">Intercept</a></li><li><a shape="rect" href="graceful-shutd
own.html">Graceful Shutdown</a></li><li><a shape="rect"
href="stream-caching.html">Stream caching</a></li><li>Logging</li></ul><p>Camel
will configure these functions by doing a lookup in the Spring bean registry to
find beans of the given type<br clear="none"> When Camel finds and uses any of
these it logs at <code>INFO</code> level.</p><p>The following list all requires
at most 1 beans defined. If there are more than 1 bean of this type, then Camel
will <strong>not</strong> use it.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Number of beans</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>PackageScanClassResolver</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>To use a 3rd pa
rty package scan resolver. More details at <a shape="rect"
href="pluggable-class-resolvers.html">Pluggable Class
Resolvers</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ClassResolver</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd party class resolver. More details at <a
shape="rect" href="pluggable-class-resolvers.html">Pluggable Class
Resolvers</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>FactoryFinderResolver</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd party factory finder.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Registry</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>To use a 3rd party bean registry. By
default Camel will use Spring Appl
icationContext as registry.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Debugger</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a <a shape="rect"
href="debugger.html">Debugger</a> usually for tooling.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Tracer</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd party <a shape="rect"
href="tracer.html">Tracer</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>TraceFormatter</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a bean that has the tracing options
configured.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>HandleFault</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><
td colspan="1" rowspan="1" class="confluenceTd"><p>To use a 3rd part fault
handler to handle FAULT messages.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Delayer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd part <a shape="rect"
href="delayer.html">Delayer</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ManagementStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd part strategy
for <a shape="rect" href="camel-jmx.html">management</a>, for example JMX
management.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ManagementNamingStrategy</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.6:</strong> To use a 3rd part
strategy for naming MBeans for <a shape="rect"
href="camel-jmx.html">management</a>.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>NodeIdFactory</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.10:</strong> To use a 3rd part node id
factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>EventFactory</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd part event
factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>EventNotifier</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd part event
notifier. In Camel 2.2 onwards you can have multiple notifiers, see next
table.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>InflightRepository</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd
part inflight repository.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ShutdownStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.2:</strong> To use a 3rd part shutdown
strategy.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ExecutorServiceStrategy</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.3 - 2.8.x:</strong> To use a 3rd part
executor service strategy. More details at <a shape="rect"
href="threading-model.html">Threading Model</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ExecutorServiceManager</
p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> To
use a 3rd part executor service manager. More details at <a shape="rect"
href="threading-model.html">Threading Model</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ThreadPoolFactory</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> To use a 3rd
part thread pool factory. More details at <a shape="rect"
href="threading-model.html">Threading Model</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ProcessorFactory</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> To use a 3rd
part processor factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>UuidGenerator</
p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> To
use a 3rd part <a shape="rect"
href="uuidgenerator.html">UuidGenerator</a>.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>StreamCachingStrategy</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> To use a 3rd
part <a shape="rect" href="stream-caching.html">Stream caching</a>
strategy.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>UnitOfWorkFactory</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.12.3/2.13:</strong> To use 3rd part
<code>UnitOfWork</code> implementations created by the
factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">RuntimeEndpointRegistry</td><td colsp
an="1" rowspan="1" class="confluenceTd">0..1</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.13.1:</strong> To use a 3rd party
RuntimeEndpointRegistry implementation.</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">Logger</td><td colspan="1" rowspan="1"
class="confluenceTd">0..1</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.12.4/2.13.1:</strong> To use provided
org.slf4j.Logger for <a shape="rect" href="log.html">Log</a> component and <a
shape="rect" href="logeip.html">log()
EIP</a>.</td></tr></tbody></table></div><p>And the following options have
support for any number of beans defined.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Number of beans</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>I
nterceptStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..n</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use your own <a shape="rect"
href="intercept.html">Intercept</a> that intercepts every processing steps in
all routes in the <a shape="rect" href="camelcontext.html">CamelContext</a>.
For instance you can use this to do an AOP like performance timer
interceptor.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>LifecycleStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..n</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use 3rd party lifecycle
strategies. By default Camel uses a JMX aware that does JMX
instrumentation.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>EventNotifier</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..n</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.2:</strong> To use 3r
d part event notifiers.</p></td></tr></tbody></table></div><p>Camel will log
at <code>INFO</code> level if it pickup and uses a custom bean using
<code>org.apache.camel.spring.CamelContextFactoryBean</code> as name.</p><h3
id="AdvancedconfigurationofCamelContextusingSpring-Usingcontainerwideinterceptors">Using
container wide interceptors</h3><p>Imagine that you have multiple <a
shape="rect" href="camelcontext.html">CamelContext</a> and you want to
configure that they all use the same container wide interceptor. How do we do
that? Well we can leverage the fact that Camel can auto detect and use custom
interceptors. So what we simply do is to define our interceptor in the spring
xml file. The sample below does this and also define 2 camel contexts. The
sample is based on unit test.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Spring DSL</b></div><div
class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2
id="AdvancedconfigurationofCamelContextusingSpring-AdvancedconfigurationofCamelContextusingSpring">Advanced
configuration of CamelContext using Spring</h2><p>When using Spring the
CamelContext can be pre configured based on defined beans in spring XML.<br
clear="none"> This wiki page documentes these features. Most of these features
requires <strong>Camel 2.0</strong>.</p><h3
id="AdvancedconfigurationofCamelContextusingSpring-Whatcanbeconfigured">What
can be configured</h3><p>The following functions can be configured:</p><ul
class="alternate"><li>Class resolvers</li><li>Lifecycle
factories</li><li>Registry for lookup</li><li><a shape="rect"
href="debugger.html">Debugger</a>, <a shape="rect"
href="tracer.html">Tracer</a>, <a shape="rect"
href="delay-interceptor.html">Delay</a> and <a shape="rect"
href="uuidgenerator.html">UuidGenerator</a></li><li><a shape="rect"
href="intercept.html">Intercept</a></li><li><a shape="rect" href="graceful-shutd
own.html">Graceful Shutdown</a></li><li><a shape="rect"
href="stream-caching.html">Stream caching</a></li><li>Logging</li></ul><p>Camel
will configure these functions by doing a lookup in the Spring bean registry to
find beans of the given type<br clear="none"> When Camel finds and uses any of
these it logs at <code>INFO</code> level.</p><p>The following list all requires
at most 1 beans defined. If there are more than 1 bean of this type, then Camel
will <strong>not</strong> use it.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Number of beans</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>PackageScanClassResolver</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>To use a 3rd pa
rty package scan resolver. More details at <a shape="rect"
href="pluggable-class-resolvers.html">Pluggable Class
Resolvers</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ClassResolver</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd party class resolver. More details at <a
shape="rect" href="pluggable-class-resolvers.html">Pluggable Class
Resolvers</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>FactoryFinderResolver</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd party factory finder.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Registry</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>To use a 3rd party bean registry. By
default Camel will use Spring Appl
icationContext as registry.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Debugger</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a <a shape="rect"
href="debugger.html">Debugger</a> usually for tooling.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Tracer</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd party <a shape="rect"
href="tracer.html">Tracer</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>TraceFormatter</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a bean that has the tracing options
configured.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>HandleFault</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><
td colspan="1" rowspan="1" class="confluenceTd"><p>To use a 3rd part fault
handler to handle FAULT messages.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Delayer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use a 3rd part <a shape="rect"
href="delayer.html">Delayer</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ManagementStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd part strategy
for <a shape="rect" href="camel-jmx.html">management</a>, for example JMX
management.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ManagementNamingStrategy</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.6:</strong> To use a 3rd part
strategy for naming MBeans for <a shape="rect"
href="camel-jmx.html">management</a>.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>NodeIdFactory</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.10:</strong> To use a 3rd part node id
factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>EventFactory</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd part event
factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>EventNotifier</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd part event
notifier. In Camel 2.2 onwards you can have multiple notifiers, see next
table.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>InflightRepository</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> To use a 3rd
part inflight repository.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ShutdownStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.2:</strong> To use a 3rd part shutdown
strategy.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ExecutorServiceStrategy</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.3 - 2.8.x:</strong> To use a 3rd part
executor service strategy. More details at <a shape="rect"
href="threading-model.html">Threading Model</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ExecutorServiceManager</
p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> To
use a 3rd part executor service manager. More details at <a shape="rect"
href="threading-model.html">Threading Model</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ThreadPoolFactory</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> To use a 3rd
part thread pool factory. More details at <a shape="rect"
href="threading-model.html">Threading Model</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ProcessorFactory</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> To use a 3rd
part processor factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>UuidGenerator</
p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> To
use a 3rd part <a shape="rect"
href="uuidgenerator.html">UuidGenerator</a>.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>StreamCachingStrategy</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>0..1</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> To use a 3rd
part <a shape="rect" href="stream-caching.html">Stream caching</a>
strategy.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>UnitOfWorkFactory</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..1</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.12.3/2.13:</strong> To use 3rd part
<code>UnitOfWork</code> implementations created by the
factory.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">RuntimeEndpointRegistry</td><td colsp
an="1" rowspan="1" class="confluenceTd">0..1</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.13.1:</strong> To use a 3rd party
RuntimeEndpointRegistry implementation.</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">Logger</td><td colspan="1" rowspan="1"
class="confluenceTd">0..1</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.12.4/2.13.1:</strong> To use provided
org.slf4j.Logger for <a shape="rect" href="log.html">Log</a> component and <a
shape="rect" href="logeip.html">log()
EIP</a>.</td></tr></tbody></table></div><p>And the following options have
support for any number of beans defined.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Number of beans</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>I
nterceptStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..n</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>To use your own <a shape="rect"
href="intercept.html">Intercept</a> that intercepts every processing steps in
all routes in the <a shape="rect" href="camelcontext.html">CamelContext</a>.
For instance you can use this to do an AOP like performance timer
interceptor.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>LifecycleStrategy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..n</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.1:</strong> To use 3rd party lifecycle
strategies. By default Camel uses a JMX aware that does JMX
instrumentation.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>EventNotifier</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>0..n</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><strong>Camel 2.2:</strong> To use 3r
d part event notifiers.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">RoutePolicyFactory</td><td colspan="1" rowspan="1"
class="confluenceTd">0..n</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>Camel 2.14:</strong> To use a 3rd party route
policy factory to create a route policy for every
route.</td></tr></tbody></table></div><p>Camel will log at <code>INFO</code>
level if it pickup and uses a custom bean using
<code>org.apache.camel.spring.CamelContextFactoryBean</code> as name.</p><h3
id="AdvancedconfigurationofCamelContextusingSpring-Usingcontainerwideinterceptors">Using
container wide interceptors</h3><p>Imagine that you have multiple <a
shape="rect" href="camelcontext.html">CamelContext</a> and you want to
configure that they all use the same container wide interceptor. How do we do
that? Well we can leverage the fact that Camel can auto detect and use custom
interceptors. So what we simply do is to define our interceptor in the spring
xml file
. The sample below does this and also define 2 camel contexts. The sample is
based on unit test.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>Spring DSL</b></div><div class="codeContent panelContent pdl">
<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
<!-- here we define a spring bean that is our container wide interceptor
Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/camel/content/camel-2140-release.html
==============================================================================
--- websites/production/camel/content/camel-2140-release.html (original)
+++ websites/production/camel/content/camel-2140-release.html Fri Aug 15
10:17:51 2014
@@ -84,7 +84,7 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1
id="Camel2.14.0Release-Camel2.14.0release(currentlyinprogress)">Camel 2.14.0
release (currently in progress)</h1><div
style="padding-right:20px;float:left;margin-left:-20px;"><p><img
class="confluence-embedded-image confluence-external-resource"
src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"
data-image-src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"></p></div><div
style="min-height:200px"> </div><h2
id="Camel2.14.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to
the 2.14.0 release which approx XXX issues resolved (new features, improvements
and bug fixes such as...)</p><ul><li>Support for running on Java 1.8
JVMs</li><li>Spring 4.x supported.</li><li><a shape="rect"
href="rest-dsl.html">REST DSL</a> to define REST services using a REST style
with verbs such as get/post/put/delete etc. The Rest DSL supports Java and XML
DSL.</li><li><a shape="rect" href="rest-dsl.html">REST DSL
</a> integrated with <a shape="rect" href="swagger.html">Swagger</a> to expose
the service as swagger apis.</li><li>Simple language defined in routes using
resultType as boolean is now evaluated as predicate instead of as
expression.</li><li>Introduced RuntimeEndpointRegistry to capture runtime usage
of endpoints in use during routing, such as dynamic endpoints from dynamic <a
shape="rect" href="eip.html">EIP</a>s.</li><li>Added event notification for
routes added and removed.</li><li>Allow to configure cache size in Recipient
List, Routing Slip and Dynamic Router EIPs; and as well turn caching
off.</li><li><a shape="rect" href="netty-http.html">Netty
HTTP</a> producer now supports the <span>CamelHttpPath header to define a
dynamic context-path and query parameters to call the remote http
server.</span></li><li><span><a shape="rect"
href="polling-consumer.html">Polling Consumer</a> allows to configure
initial queue size and whether to block when full when using the default
 <code>EventDrivenPollingConsumer</code> which most components does. We
now block by default, as otherwise the message may be lost if the queue was
full, and a new message was offered.</span></li><li><span><a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/CAMEL-7435">Added</a> a generic
callback to configure the <a shape="rect" href="apns.html">APNS</a> service
builder.</span></li><li><span>Added <code>StreamList</code> option to
the <a shape="rect" href="jdbc.html">JDBC</a>
component</span></li><li>Allow to define Simple expressions for sql parameters
of the <a shape="rect" href="sql-component.html">SQL</a> component.<span><br
clear="none"></span></li><li>A new XML tokenizer that is truly XML-aware (e.g.,
supporting XML namespaces and complex hierarchical structures)</li><li>Added
option <code>parallelAggregate</code> to <a shape="rect"
href="multicast.html">Multicast</a>, <a shape="rect"
href="splitter.html">Splitter</a> and <a s
hape="rect" href="recipient-list.html">Recipient
List</a> EIPs</li><li>Support to set the variable map from message header
in <a shape="rect" href="velocity.html">Velocity</a>, <a shape="rect"
href="freemarker.html">Freemarker</a>, <a shape="rect"
href="stringtemplate.html">StringTemplate</a>.</li><li><span>Added
HazelcastInstance option to <span><a shape="rect"
href="hazelcast-component.html">Hazelcast</a>
component.</span></span></li><li>Producers from static <a shape="rect"
href="eip.html">EIPs</a> such as <to> is is now also enlisted in <a
shape="rect" href="camel-jmx.html">JMX</a> when Camel is starting
routes.</li><li>Unmarshal json to pojo using <code>camel-jackson</code>
now supports a header to tell Camel what the pojo class name is, to allow more
dynamic behavior, as otherwise the class name would be hardcoded.</li><li>Also
allow to configure <code>camel-jackson</code> to skip null values, by
setting includes to <code>NOT_NULL</code>.</li><li
>And <code>camel-jackson</code> can now easily be configured to unmarshal
>to a <code>List<pojo></code> or
><code>List<Map></code> instead of either a single pojo
>or <code>Map</code>
>type. </li><li>Introduced <code>SynchronizationRouteAware</code>
>allowing to have callbacks before/after an Exchange is being routed. This
>allows to trigger custom code at these points, for example after a route, but
>before a Consumer writes any response back to a caller (InOut
>mode).</li><li><a shape="rect" href="jdbc.html">JDBC</a> now supports
>outputClass for SelectList type.</li><li>Routes starting from <a
>shape="rect" href="jms.html">JMS</a> will now shutdown the consumer
>(MessageListenerContainer) quicker when CamelContext is being stopped.
>(assuming the <span style="color:
>rgb(0,0,0);">acceptMessagesWhileStopping hasn't been set to true). This can
>also help a cleaner shutdown as otherwise some JMS clients may attempt
>re-connect/fail
over during shutdown which isn't desired anyway as we are shutting
down.</span></li><li><span style="color: rgb(0,0,0);"><a shape="rect"
href="oncompletion.html">OnCompletion</a> can now be configured to use or not
use a thread pool, and as well whether to run before or after the route
consumer. Running before the consumer allows to modify the exchange before the
consumer writes it as response to the callee (if consumer is InOut mode)<br
clear="none"></span></li><li><span style="color:
rgb(0,0,0);">Added <span>Bulk Index message operation to <a shape="rect"
href="elasticsearch.html">Elasticsearch</a>
component.</span></span></li></ul><h3 id="Camel2.14.0Release-FixedIssues">Fixed
Issues</h3><ul><li>Timer consumer is now scheduled after CamelContext has
started all routes, to ensure other routes is running when timer routes is
triggered to run.</li><li><a shape="rect" href="netty-http.html">Netty HTTP</a>
now returns HTTP status 404 if resource not found instead of 503.</li><li>F
ixed the <a shape="rect" class="external-link"
href="https://camel.apache.org/mongodb.html">MongoDB</a> <code>readPreference</code> option
which used to cause an <code>IllegalArgumentException</code> to be
thrown.</li><li>Fixed issue with Netty producer may leak HashWhealTimer
instances when having many producers that are not reused.</li><li>Fixed issue
with Netty consumer should wait for join to complete when joining a multicast
group over UDP </li><li>Improved stability when testing
with <code>camel-test-blueprint</code> component.</li><li><a shape="rect"
href="netty-http.html">Netty HTTP</a> now <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/CAMEL-7506">removes</a>
<code>headerFilterStrategy</code> option after resolving<span
class="overlay-icon aui-icon aui-icon-small
aui-iconfont-edit"> </span>it</li><li>Fixed <a shape="rect"
href="aggregator2.html">POJO aggregating</a> when the parameter type was
referring t
o a type that was class annotated.</li><li>Fixed <a shape="rect"
href="mybatis.html">MyBatis</a> to keep the message body as-is when
calling stored procedures, if the procedure returns data as OUT
parameters.</li><li>Fixed Camel Karaf commands to work with multiple
CamelContext from the same bundle.</li><li>Fixed <a shape="rect"
href="advicewith.html">Advice-With</a> to work with transacted routes defined
in XML DSL</li><li>Fixed <a shape="rect" href="advicewith.html">Advice-With</a>
to work with Content Based Router when adding outputs to the when
clauses.</li><li>Improved <span><code>NettyWorkerPoolBuilder#build</code>
<a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/CAMEL-7583">visibility</a>.</span></li></ul><h3
id="Camel2.14.0Release-New">New <a shape="rect"
href="enterprise-integration-patterns.html">Enterprise Integration
Patterns</a></h3><ul><li><a shape="rect" href="load-balancer.html">Circuit
Breaker</a> pattern implemented a
s a Load Balancer policy</li></ul><h3 id="Camel2.14.0Release-New.1">New <a
shape="rect"
href="components.html">Components</a></h3><ul><li>camel-ahc-ws</li><li>camel-atmosphere-websocket</li><li>camel-box</li><li><a
shape="rect" href="dropbox.html">camel-dropbox</a></li><li><a shape="rect"
href="metrics-component.html">camel-metrics</a></li><li>camel-netty4</li><li><a
shape="rect" href="openshift.html">camel-openshift</a></li><li><a shape="rect"
href="gora.html">camel-gora</a></li><li><a shape="rect"
href="rest.html">camel-rest</a> (in camel-core)</li><li><a shape="rect"
href="spark-rest.html">camel-spar</a><a shape="rect"
href="spark-rest.html">k-rest</a></li><li><a shape="rect"
href="swagger.html">camel-swagger</a> </li></ul><h3
id="Camel2.14.0Release-New.2">New <a shape="rect"
href="camel-maven-archetypes.html">Camel Maven Archetypes</a></h3><h3
id="Camel2.14.0Release-NewDSL">New DSL</h3><h3
id="Camel2.14.0Release-NewAnnotations">New Annotations</h3><h3
id="Camel2.14.0Release
-NewDataFormats">New <a shape="rect" href="data-format.html">Data
Formats</a></h3><ul><li><a shape="rect" href="gora.html">camel-</a><a
shape="rect" href="barcode-data-format.html">barcode</a></li></ul><h3
id="Camel2.14.0Release-New.3">New <a shape="rect"
href="languages.html">Languages</a></h3><ul><li>XMLTokenizer</li></ul><h3
id="Camel2.14.0Release-New.4">New <a shape="rect"
href="examples.html">Examples</a></h3><h3 id="Camel2.14.0Release-New.5">New <a
shape="rect" href="tutorials.html">Tutorials</a></h3><h3
id="Camel2.14.0Release-NewTooling">New Tooling</h3><h2
id="Camel2.14.0Release-APIchanges">API changes</h2><ul><li><p>Removed duplicate
getter <code>getMessageHistory</code>
on <code>ManagedCamelContextMBean</code></p></li><li><p>Added
org.apache.camel.spi.SynchronizationRouteAware</p></li><li>Added beforeRoute
and afterRoute methods to UnitOfWork.</li></ul><h2
id="Camel2.14.0Release-KnownIssues">Known Issues</h2><h2
id="Camel2.14.0Release-DependencyUpgrades">Dependen
cy Upgrades</h2><p>You can see any dependency changes using <a shape="rect"
class="external-link" href="http://vdiff.notsoclever.cc/" rel="nofollow">Camel
Dependencies Version Differences web tool</a> created by Tracy Snell from the
Camel <a shape="rect" href="team.html">Team</a>.</p><p>The below list is a best
effort, and we may miss some updates, its better to use the <a shape="rect"
class="external-link" href="http://vdiff.notsoclever.cc/" rel="nofollow">Camel
Dependencies Version Differences web tool</a> which uses the released projects
for comparison.</p><ul><li>Atomikos 3.9.2 to 3.9.3</li><li>Commons-codec 1.8 to
1.9</li><li>CXF 2.7.11 to 3.0.1</li><li>Deltaspike 0.7 to 1.0.1</li><li>Dozer
5.4.0 to 5.5.1</li><li>EhCache 2.8.1 to 2.8.3</li><li>Groovy 2.2.2 to
2.3.4</li><li>Guava 16.0.1 to 17.0</li><li>Hapi 2.1 to 2.2</li><li>Hazelcast
3.0.3 to 3.2.4</li><li>JRuby 1.7.10 to 1.7.12</li><li>MongoDB-Java-Driver
2.11.4 to 2.12.0</li><li>RabbitMQ AMQ Client 3.2.2 to 3.3.0</li><li>Res
tlet 2.17 to 2.2.1</li><li>RxJava 0.17.5 to 0.19.4</li><li>Scala 2.10.3 to
2.11.2</li><li>Snmp4j 2.2.5 to 2.3.0</li><li>SSHD 0.10.1 to
0.11.0</li><li>spring-redis 1.1.0 to 1.3.0</li><li>Twitter4j 3.0.5 x to
4.0.1</li></ul><h2 id="Camel2.14.0Release-Internalchanges">Internal
changes</h2><ul><li>Changed ...</li></ul><h2
id="Camel2.14.0Release-Changesthatmayaffectendusers">Changes that may affect
end users</h2><ul><li><a shape="rect" href="polling-consumer.html">Polling
Consumer</a> allows to configure initial queue size and whether to block
when full when using the default <code>EventDrivenPollingConsumer</code>
which most components does. We now block by default, as otherwise the message
may be lost if the queue was full, and a new message was
offered.</li><li><code>camel-scala</code> upgraded from Scala 2.10.x to
2.11.x</li><li>The option <code>useSsl</code> has been removed
from <code>camel-twitter</code> as ssl is always enabled now, enforced by
twitter</li><li
>Fixed <a shape="rect" href="restlet.html">Restlet</a> to return error
>code 405 (instead of 404 if a http method is not allowed</li><li>Routes
>starting from <a shape="rect" href="jms.html">JMS</a> will now
>shutdown the consumer (MessageListenerContainer) quicker when CamelContext is
>being stopped. (assuming the <span style="color:
>rgb(0,0,0);">acceptMessagesWhileStopping hasn't been set to true). This can
>also help a cleaner shutdown as otherwise some JMS clients may attempt
>re-connect/failover during shutdown which isn't desired anyway as we are
>shutting down. If you want the routes to keep accepting messages during
>shutdown of Camel, then set <span style="color:
>rgb(0,0,0);">acceptMessagesWhileStopping=true.</span></span></li><li><span
>style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"><a shape="rect"
>href="oncompletion.html">OnCompletion</a> now runs without thread pool by
>default. To restore old behavior set <code>paralllelProcessing</code>
to true.<br clear="none"></span></span></li></ul><h2
id="Camel2.14.0Release-Importantchangestoconsiderwhenupgrading">Important
changes to consider when upgrading</h2><ul><li>Java 1.6 no longer
supported.</li><li>Unit testing with Spring 3.x now requires using
camel-test-spring3, as camel-test-spring is for Spring 4.x<br clear="none"><br
clear="none"></li></ul><h2
id="Camel2.14.0Release-GettingtheDistributions">Getting the
Distributions</h2><h3 id="Camel2.14.0Release-BinaryDistributions">Binary
Distributions</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Windows
Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a
shape="rect" class="external-li
nk"
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.14.0/apache-camel-2.14.0.zip">apache-camel-2.14.0.zip</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
class="external-link"
href="http://www.apache.org/dist/camel/apache-camel/2.14.0/apache-camel-2.14.0.zip.asc">apache-camel-2.14.0.zip.asc</a></p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin
Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a
shape="rect" class="external-link"
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.14.0/apache-camel-2.14.0.tar.gz">apache-camel-2.14.0.tar.gz</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
class="external-link"
href="http://www.apache.org/dist/camel/apache-camel/2.14.0/apache-camel-2.14.0.tar.gz.asc">apache-camel-2.14.0.tar.gz.asc</a></p></td></tr></tbody></table></div><h3
id="Camel2.14.0Release-SourceDistribution">Source Distribution</
h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of
download</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Source</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.14.0/apache-camel-2.14.0-src.zip">apache-camel-2.14.0-src.zip</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
class="external-link"
href="http://www.apache.org/dist/camel/apache-camel/2.14.0/apache-camel-2.14.0-src.zip.asc">apache-camel-2.14.0-src.zip.asc</a></p></td></tr></tbody></table></div><h3
id="Camel2.14.0Release-GettingtheBinariesusingMaven2">Getting the Binaries
using Maven 2</h3><p>To use this release in your maven
project, the proper dependency configuration that you should use in your <a
shape="rect" class="external-link"
href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">Maven
POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h1
id="Camel2.14.0Release-Camel2.14.0release(currentlyinprogress)">Camel 2.14.0
release (currently in progress)</h1><div
style="padding-right:20px;float:left;margin-left:-20px;"><p><img
class="confluence-embedded-image confluence-external-resource"
src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"
data-image-src="http://camel.apache.org/download.data/camel-box-v1.0-150x200.png"></p></div><div
style="min-height:200px"> </div><h2
id="Camel2.14.0Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to
the 2.14.0 release which approx XXX issues resolved (new features, improvements
and bug fixes such as...)</p><ul><li>Support for running on Java 1.8
JVMs</li><li>Spring 4.x supported.</li><li><a shape="rect"
href="rest-dsl.html">REST DSL</a> to define REST services using a REST style
with verbs such as get/post/put/delete etc. The Rest DSL supports Java and XML
DSL.</li><li><a shape="rect" href="rest-dsl.html">REST DSL
</a> integrated with <a shape="rect" href="swagger.html">Swagger</a> to expose
the service as swagger apis.</li><li>Simple language defined in routes using
resultType as boolean is now evaluated as predicate instead of as
expression.</li><li>Introduced RuntimeEndpointRegistry to capture runtime usage
of endpoints in use during routing, such as dynamic endpoints from dynamic <a
shape="rect" href="eip.html">EIP</a>s.</li><li>Added event notification for
routes added and removed.</li><li>Allow to configure cache size in Recipient
List, Routing Slip and Dynamic Router EIPs; and as well turn caching
off.</li><li><a shape="rect" href="netty-http.html">Netty
HTTP</a> producer now supports the <span>CamelHttpPath header to define a
dynamic context-path and query parameters to call the remote http
server.</span></li><li><span><a shape="rect"
href="polling-consumer.html">Polling Consumer</a> allows to configure
initial queue size and whether to block when full when using the default
 <code>EventDrivenPollingConsumer</code> which most components does. We
now block by default, as otherwise the message may be lost if the queue was
full, and a new message was offered.</span></li><li><span><a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/CAMEL-7435">Added</a> a generic
callback to configure the <a shape="rect" href="apns.html">APNS</a> service
builder.</span></li><li><span>Added <code>StreamList</code> option to
the <a shape="rect" href="jdbc.html">JDBC</a>
component</span></li><li>Allow to define Simple expressions for sql parameters
of the <a shape="rect" href="sql-component.html">SQL</a> component.<span><br
clear="none"></span></li><li>A new XML tokenizer that is truly XML-aware (e.g.,
supporting XML namespaces and complex hierarchical structures)</li><li>Added
option <code>parallelAggregate</code> to <a shape="rect"
href="multicast.html">Multicast</a>, <a shape="rect"
href="splitter.html">Splitter</a> and <a s
hape="rect" href="recipient-list.html">Recipient
List</a> EIPs</li><li>Support to set the variable map from message header
in <a shape="rect" href="velocity.html">Velocity</a>, <a shape="rect"
href="freemarker.html">Freemarker</a>, <a shape="rect"
href="stringtemplate.html">StringTemplate</a>.</li><li><span>Added
HazelcastInstance option to <span><a shape="rect"
href="hazelcast-component.html">Hazelcast</a>
component.</span></span></li><li>Producers from static <a shape="rect"
href="eip.html">EIPs</a> such as <to> is is now also enlisted in <a
shape="rect" href="camel-jmx.html">JMX</a> when Camel is starting
routes.</li><li>Unmarshal json to pojo using <code>camel-jackson</code>
now supports a header to tell Camel what the pojo class name is, to allow more
dynamic behavior, as otherwise the class name would be hardcoded.</li><li>Also
allow to configure <code>camel-jackson</code> to skip null values, by
setting includes to <code>NOT_NULL</code>.</li><li
>And <code>camel-jackson</code> can now easily be configured to unmarshal
>to a <code>List<pojo></code> or
><code>List<Map></code> instead of either a single pojo
>or <code>Map</code>
>type. </li><li>Introduced <code>SynchronizationRouteAware</code>
>allowing to have callbacks before/after an Exchange is being routed. This
>allows to trigger custom code at these points, for example after a route, but
>before a Consumer writes any response back to a caller (InOut
>mode).</li><li><a shape="rect" href="jdbc.html">JDBC</a> now supports
>outputClass for SelectList type.</li><li>Routes starting from <a
>shape="rect" href="jms.html">JMS</a> will now shutdown the consumer
>(MessageListenerContainer) quicker when CamelContext is being stopped.
>(assuming the <span style="color:
>rgb(0,0,0);">acceptMessagesWhileStopping hasn't been set to true). This can
>also help a cleaner shutdown as otherwise some JMS clients may attempt
>re-connect/fail
over during shutdown which isn't desired anyway as we are shutting
down.</span></li><li><span style="color: rgb(0,0,0);"><a shape="rect"
href="oncompletion.html">OnCompletion</a> can now be configured to use or not
use a thread pool, and as well whether to run before or after the route
consumer. Running before the consumer allows to modify the exchange before the
consumer writes it as response to the callee (if consumer is InOut mode)<br
clear="none"></span></li><li><span style="color:
rgb(0,0,0);">Added <span>Bulk Index message operation to <a shape="rect"
href="elasticsearch.html">Elasticsearch</a>
component.</span></span></li><li><span style="color: rgb(0,0,0);"><span>Added
<a shape="rect" href="routepolicy.html">RoutePolicyFactory</a> to create and
assign a <code>RoutePolicy</code> for every route, instead of having to
configure this for every route.</span></span></li></ul><h3
id="Camel2.14.0Release-FixedIssues">Fixed Issues</h3><ul><li>Timer consumer is
now scheduled
after CamelContext has started all routes, to ensure other routes is running
when timer routes is triggered to run.</li><li><a shape="rect"
href="netty-http.html">Netty HTTP</a> now returns HTTP status 404 if resource
not found instead of 503.</li><li>Fixed the <a shape="rect"
class="external-link"
href="https://camel.apache.org/mongodb.html">MongoDB</a> <code>readPreference</code> option
which used to cause an <code>IllegalArgumentException</code> to be
thrown.</li><li>Fixed issue with Netty producer may leak HashWhealTimer
instances when having many producers that are not reused.</li><li>Fixed issue
with Netty consumer should wait for join to complete when joining a multicast
group over UDP </li><li>Improved stability when testing
with <code>camel-test-blueprint</code> component.</li><li><a shape="rect"
href="netty-http.html">Netty HTTP</a> now <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/CAMEL-7506">removes</a> <c
ode>headerFilterStrategy</code> option after resolving<span
class="overlay-icon aui-icon aui-icon-small
aui-iconfont-edit"> </span>it</li><li>Fixed <a shape="rect"
href="aggregator2.html">POJO aggregating</a> when the parameter type was
referring to a type that was class annotated.</li><li>Fixed <a
shape="rect" href="mybatis.html">MyBatis</a> to keep the message body
as-is when calling stored procedures, if the procedure returns data as OUT
parameters.</li><li>Fixed Camel Karaf commands to work with multiple
CamelContext from the same bundle.</li><li>Fixed <a shape="rect"
href="advicewith.html">Advice-With</a> to work with transacted routes defined
in XML DSL</li><li>Fixed <a shape="rect" href="advicewith.html">Advice-With</a>
to work with Content Based Router when adding outputs to the when
clauses.</li><li>Improved <span><code>NettyWorkerPoolBuilder#build</code>
<a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/CAMEL-7583">visibi
lity</a>.</span></li></ul><h3 id="Camel2.14.0Release-New">New <a shape="rect"
href="enterprise-integration-patterns.html">Enterprise Integration
Patterns</a></h3><ul><li><a shape="rect" href="load-balancer.html">Circuit
Breaker</a> pattern implemented as a Load Balancer policy</li></ul><h3
id="Camel2.14.0Release-New.1">New <a shape="rect"
href="components.html">Components</a></h3><ul><li>camel-ahc-ws</li><li>camel-atmosphere-websocket</li><li>camel-box</li><li><a
shape="rect" href="dropbox.html">camel-dropbox</a></li><li><a shape="rect"
href="metrics-component.html">camel-metrics</a></li><li>camel-netty4</li><li><a
shape="rect" href="openshift.html">camel-openshift</a></li><li><a shape="rect"
href="gora.html">camel-gora</a></li><li><a shape="rect"
href="rest.html">camel-rest</a> (in camel-core)</li><li><a shape="rect"
href="spark-rest.html">camel-spar</a><a shape="rect"
href="spark-rest.html">k-rest</a></li><li><a shape="rect"
href="swagger.html">camel-swagger</a> </li></ul><h3
id="Camel2.14.0Release-New.2">New <a shape="rect"
href="camel-maven-archetypes.html">Camel Maven Archetypes</a></h3><h3
id="Camel2.14.0Release-NewDSL">New DSL</h3><h3
id="Camel2.14.0Release-NewAnnotations">New Annotations</h3><h3
id="Camel2.14.0Release-NewDataFormats">New <a shape="rect"
href="data-format.html">Data Formats</a></h3><ul><li><a shape="rect"
href="gora.html">camel-</a><a shape="rect"
href="barcode-data-format.html">barcode</a></li></ul><h3
id="Camel2.14.0Release-New.3">New <a shape="rect"
href="languages.html">Languages</a></h3><ul><li>XMLTokenizer</li></ul><h3
id="Camel2.14.0Release-New.4">New <a shape="rect"
href="examples.html">Examples</a></h3><h3 id="Camel2.14.0Release-New.5">New <a
shape="rect" href="tutorials.html">Tutorials</a></h3><h3
id="Camel2.14.0Release-NewTooling">New Tooling</h3><h2
id="Camel2.14.0Release-APIchanges">API changes</h2><ul><li><p>Removed duplicate
getter <code>getMessageHistory</code>
on <code>ManagedCamelContextMBean</code></p></li><
li><p>Added
org.apache.camel.spi.SynchronizationRouteAware</p></li><li>Added beforeRoute
and afterRoute methods to UnitOfWork.</li></ul><h2
id="Camel2.14.0Release-KnownIssues">Known Issues</h2><h2
id="Camel2.14.0Release-DependencyUpgrades">Dependency Upgrades</h2><p>You can
see any dependency changes using <a shape="rect" class="external-link"
href="http://vdiff.notsoclever.cc/" rel="nofollow">Camel Dependencies Version
Differences web tool</a> created by Tracy Snell from the Camel <a shape="rect"
href="team.html">Team</a>.</p><p>The below list is a best effort, and we may
miss some updates, its better to use the <a shape="rect" class="external-link"
href="http://vdiff.notsoclever.cc/" rel="nofollow">Camel Dependencies Version
Differences web tool</a> which uses the released projects for
comparison.</p><ul><li>Atomikos 3.9.2 to 3.9.3</li><li>Commons-codec 1.8 to
1.9</li><li>CXF 2.7.11 to 3.0.1</li><li>Deltaspike 0.7 to 1.0.1</li><li>Dozer
5.4.0 to 5.5.1</li><li>EhCache 2.8.1 to
2.8.3</li><li>Groovy 2.2.2 to 2.3.4</li><li>Guava 16.0.1 to 17.0</li><li>Hapi
2.1 to 2.2</li><li>Hazelcast 3.0.3 to 3.2.4</li><li>JRuby 1.7.10 to
1.7.12</li><li>MongoDB-Java-Driver 2.11.4 to 2.12.0</li><li>RabbitMQ AMQ Client
3.2.2 to 3.3.0</li><li>Restlet 2.17 to 2.2.1</li><li>RxJava 0.17.5 to
0.19.4</li><li>Scala 2.10.3 to 2.11.2</li><li>Snmp4j 2.2.5 to
2.3.0</li><li>SSHD 0.10.1 to 0.11.0</li><li>spring-redis 1.1.0 to
1.3.0</li><li>Twitter4j 3.0.5 x to 4.0.1</li></ul><h2
id="Camel2.14.0Release-Internalchanges">Internal changes</h2><ul><li>Changed
...</li></ul><h2 id="Camel2.14.0Release-Changesthatmayaffectendusers">Changes
that may affect end users</h2><ul><li><a shape="rect"
href="polling-consumer.html">Polling Consumer</a> allows to configure
initial queue size and whether to block when full when using the
default <code>EventDrivenPollingConsumer</code> which most components
does. We now block by default, as otherwise the message may be lost if the
queue was full, and
a new message was offered.</li><li><code>camel-scala</code> upgraded from
Scala 2.10.x to 2.11.x</li><li>The option <code>useSsl</code> has been
removed from <code>camel-twitter</code> as ssl is always enabled now,
enforced by twitter</li><li>Fixed <a shape="rect"
href="restlet.html">Restlet</a> to return error code 405 (instead of 404 if a
http method is not allowed</li><li>Routes starting from <a shape="rect"
href="jms.html">JMS</a> will now shutdown the consumer
(MessageListenerContainer) quicker when CamelContext is being stopped.
(assuming the <span style="color: rgb(0,0,0);">acceptMessagesWhileStopping
hasn't been set to true). This can also help a cleaner shutdown as otherwise
some JMS clients may attempt re-connect/failover during shutdown which isn't
desired anyway as we are shutting down. If you want the routes to keep
accepting messages during shutdown of Camel, then set <span style="color:
rgb(0,0,0);">acceptMessagesWhileStopping=true.
</span></span></li><li><span style="color: rgb(0,0,0);"><span style="color:
rgb(0,0,0);"><a shape="rect" href="oncompletion.html">OnCompletion</a> now runs
without thread pool by default. To restore old behavior
set <code>paralllelProcessing</code> to true.<br
clear="none"></span></span></li></ul><h2
id="Camel2.14.0Release-Importantchangestoconsiderwhenupgrading">Important
changes to consider when upgrading</h2><ul><li>Java 1.6 no longer
supported.</li><li>Unit testing with Spring 3.x now requires using
camel-test-spring3, as camel-test-spring is for Spring 4.x<br clear="none"><br
clear="none"></li></ul><h2
id="Camel2.14.0Release-GettingtheDistributions">Getting the
Distributions</h2><h3 id="Camel2.14.0Release-BinaryDistributions">Binary
Distributions</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Download Link</p></th><th colspan="1
" rowspan="1" class="confluenceTh"><p>PGP Signature file of
download</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.14.0/apache-camel-2.14.0.zip">apache-camel-2.14.0.zip</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
class="external-link"
href="http://www.apache.org/dist/camel/apache-camel/2.14.0/apache-camel-2.14.0.zip.asc">apache-camel-2.14.0.zip.asc</a></p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin
Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a
shape="rect" class="external-link"
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.14.0/apache-camel-2.14.0.tar.gz">apache-camel-2.14.0.tar.gz</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect
" class="external-link"
href="http://www.apache.org/dist/camel/apache-camel/2.14.0/apache-camel-2.14.0.tar.gz.asc">apache-camel-2.14.0.tar.gz.asc</a></p></td></tr></tbody></table></div><h3
id="Camel2.14.0Release-SourceDistribution">Source Distribution</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>PGP Signature file of
download</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>Source</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/2.14.0/apache-camel-2.14.0-src.zip">apache-camel-2.14.0-src.zip</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
class="external-link" href="http://www.apache.org/dist/camel/apach
e-camel/2.14.0/apache-camel-2.14.0-src.zip.asc">apache-camel-2.14.0-src.zip.asc</a></p></td></tr></tbody></table></div><h3
id="Camel2.14.0Release-GettingtheBinariesusingMaven2">Getting the Binaries
using Maven 2</h3><p>To use this release in your maven project, the proper
dependency configuration that you should use in your <a shape="rect"
class="external-link"
href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">Maven
POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
Modified: websites/production/camel/content/facebook.html
==============================================================================
--- websites/production/camel/content/facebook.html (original)
+++ websites/production/camel/content/facebook.html Fri Aug 15 10:17:51 2014
@@ -102,7 +102,7 @@
.to("facebook://postFeed/inBody=postUpdate);
]]></script>
</div></div><p>To poll, every 5 sec (You can set the <a shape="rect"
href="polling-consumer.html">polling consumer</a> options by adding a
prefix of "consumer"), all statuses on your home feed:</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
from("facebook://home?consumer.delay=5")
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
from("facebook://home?consumer.delay=5000")
.to("bean:blah");
]]></script>
</div></div><p>Searching using a producer with dynamic options from
header.</p><p>In the bar header we have the Facebook search string we want to
execute in public posts, so we need to assign this value to the
CamelFacebook.query header.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
Modified: websites/production/camel/content/routepolicy.html
==============================================================================
--- websites/production/camel/content/routepolicy.html (original)
+++ websites/production/camel/content/routepolicy.html Fri Aug 15 10:17:51 2014
@@ -85,93 +85,34 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2
id="RoutePolicy-RoutePolicy">RoutePolicy</h2>
-<p><strong>Available as of Camel 2.1</strong></p>
-
-<p>A route policy <code>org.apache.camel.spi.RoutePolicy</code> is used to
control route(s) at runtime. For example you can use it to determine whether a
route should be running or not. However the policies can support any kind of
use cases.</p>
-
-<h3 id="RoutePolicy-Howitworks">How it works</h3>
-<p>You associate a route with a given <code>RoutePolicy</code> and then during
runtime Camel will invoke callbacks on this policy where you can implement your
custom logic.</p>
-
-<p>Camel provides a support class that is a good base class to extend
<code>org.apache.camel.impl.RoutePolicySupport</code>. </p>
-
-<p>There are these callbacks invoked</p>
-<ul class="alternate"><li><code>onInit</code> <strong>Camel
2.3</strong></li><li><code>onRemove</code> <strong>Camel
2.9</strong></li><li><code>onStart</code> <strong>Camel
2.9</strong></li><li><code>onStop</code> <strong>Camel
2.9</strong></li><li><code>onSuspend</code> <strong>Camel
2.9</strong></li><li><code>onResume</code> <strong>Camel
2.9</strong></li><li><code>onExchangeBegin</code></li><li><code>onExchangeDone</code></li></ul>
-
-
-<p>See the javadoc of the <code>org.apache.camel.spi.RoutePolicy</code> for
more details.<br clear="none">
-And also the implementation of the
<code>org.apache.camel.impl.ThrottlingInflightRoutePolicy</code> for a concrete
example.</p>
-
-<p>Camel provides the following policies out of the box:</p>
-<ul
class="alternate"><li><code>org.apache.camel.impl.ThrottlingInflightRoutePolicy</code>
- a throttling based policy that automatic suspends/resumes route(s) based on
metrics from the current in flight exchanges. You can use this to dynamic
throttle e.g. a <a shape="rect" href="jms.html">JMS</a> consumer to avoid it
consuming too fast.</li></ul>
-
-
-<p>As of <strong>Camel 2.5</strong>, Camel also provides an ability to
schedule routes to be activated, de-activated, suspended and/or resumed at
certain times during the day using a <a shape="rect"
href="scheduledroutepolicy.html">ScheduledRoutePolicy</a> (offered via the <a
shape="rect" class="external-link"
href="http://camel.apache.org/quartz.html">camel-quartz</a> component). </p>
-
-
- <div class="aui-message success shadowed information-macro">
+<div class="wiki-content maincontent"><h2
id="RoutePolicy-RoutePolicy">RoutePolicy</h2><p><strong>Available as of Camel
2.1</strong></p><p>A route policy <code>org.apache.camel.spi.RoutePolicy</code>
is used to control route(s) at runtime. For example you can use it to determine
whether a route should be running or not. However the policies can support any
kind of use cases.</p><h3 id="RoutePolicy-Howitworks">How it works</h3><p>You
associate a route with a given <code>RoutePolicy</code> and then during runtime
Camel will invoke callbacks on this policy where you can implement your custom
logic.</p><p>Camel provides a support class that is a good base class to extend
<code>org.apache.camel.impl.RoutePolicySupport</code>.</p><p>There are these
callbacks invoked</p><ul class="alternate"><li><code>onInit</code>
<strong>Camel 2.3</strong></li><li><code>onRemove</code> <strong>Camel
2.9</strong></li><li><code>onStart</code> <strong>Camel
2.9</strong></li><li><code>onStop</code> <strong>C
amel 2.9</strong></li><li><code>onSuspend</code> <strong>Camel
2.9</strong></li><li><code>onResume</code> <strong>Camel
2.9</strong></li><li><code>onExchangeBegin</code></li><li><code>onExchangeDone</code></li></ul><p>See
the javadoc of the <code>org.apache.camel.spi.RoutePolicy</code> for more
details.<br clear="none"> And also the implementation of the
<code>org.apache.camel.impl.ThrottlingInflightRoutePolicy</code> for a concrete
example.</p><p>Camel provides the following policies out of the box:</p><ul
class="alternate"><li><code>org.apache.camel.impl.ThrottlingInflightRoutePolicy</code>
- a throttling based policy that automatic suspends/resumes route(s) based on
metrics from the current in flight exchanges. You can use this to dynamic
throttle e.g. a <a shape="rect" href="jms.html">JMS</a> consumer to avoid it
consuming too fast.</li></ul><p>As of <strong>Camel 2.5</strong>, Camel also
provides an ability to schedule routes to be activated, de-activated, suspended
and/or resu
med at certain times during the day using a <a shape="rect"
href="scheduledroutepolicy.html">ScheduledRoutePolicy</a> (offered via the <a
shape="rect" class="external-link"
href="http://camel.apache.org/quartz.html">camel-quartz</a> component).</p>
<div class="aui-message success shadowed information-macro">
<p class="title">SuspendableService</p>
<span class="aui-icon icon-success">Icon</span>
<div class="message-content">
-
-<p>If you want to dynamic suspend/resume routes as the
<code>org.apache.camel.impl.ThrottlingRoutePolicy</code> does then its advised
to use <code>org.apache.camel.SuspendableService</code> as it allows for fine
grained <code>suspend</code> and <code>resume</code> operations. And use the
<code>org.apache.camel.util.ServiceHelper</code> to aid when invoking these
operations as it support fallback for regular
<code>org.apache.camel.Service</code> instances.</p>
+ <p>If you want to dynamic suspend/resume routes as
the <code>org.apache.camel.impl.ThrottlingRoutePolicy</code> does then its
advised to use <code>org.apache.camel.SuspendableService</code> as it allows
for fine grained <code>suspend</code> and <code>resume</code> operations. And
use the <code>org.apache.camel.util.ServiceHelper</code> to aid when invoking
these operations as it support fallback for regular
<code>org.apache.camel.Service</code> instances.</p>
</div>
</div>
-
-
-<h4
id="RoutePolicy-ThrottlingInflightRoutePolicy">ThrottlingInflightRoutePolicy</h4>
-<p>The ThrottlingInflightRoutePolicy is triggered when an <a shape="rect"
href="exchange.html">Exchange</a> is complete, which means that it requires at
least one <a shape="rect" href="exchange.html">Exchange</a> to be complete
before it <em>works</em>. </p>
-
-<p>The throttling inflight route policy has the following options:</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> Option </p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p> Default </p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p> Description
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> scope
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Route
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> A scope for
either <code>Route</code> or <code>Context</code> which defines if the current
number of inflight exchanges is context based or for that particular route.
</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>
maxInflightExchanges </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> 1000 </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> The maximum threshold when the throttling will start
to suspend the route if the current number of inlfight exchanges is higher than
this value. </p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p> resumePercentOfMax </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> 70 </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> A percentage 0..100 which defines when the throttling
should resume again in case it has been suspended. </p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p> loggingLevel </p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p> INFO </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> The logging level used for logging the
throttling activity. </p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p> logger </p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p> ThrottlingInflightRoutePolicy </p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p> The logger category.
</p></td></tr></tbody></table></div>
-
-
- <div class="aui-message hint shadowed information-macro">
+<h4
id="RoutePolicy-ThrottlingInflightRoutePolicy">ThrottlingInflightRoutePolicy</h4><p>The
ThrottlingInflightRoutePolicy is triggered when an <a shape="rect"
href="exchange.html">Exchange</a> is complete, which means that it requires at
least one <a shape="rect" href="exchange.html">Exchange</a> to be complete
before it <em>works</em>.</p><p>The throttling inflight route policy has the
following options:</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>scope</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Route</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>A scope for either <code>Route</code> or
<code>Context</code> which defines if the current number of inflight exchanges
is context based or for that particular route.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>maxInflightExchanges</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>1000</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>The maximum threshold when the throttling will start to
suspend the route if the current number of inlfight exchanges is higher than
this value.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>resumePercentOfMax</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>70</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>A percentage 0..100 which defines when the throttling
should resume again in case it has been suspended.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>loggingLevel</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>INFO</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The logging level used for logging the
throttling activity.</p></t
d></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>logger</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ThrottlingInflightRoutePolicy</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The logger
category.</p></td></tr></tbody></table></div> <div class="aui-message hint
shadowed information-macro">
<p class="title">ThrottlingInflightRoutePolicy compared to
the [Throttler] EIP</p>
<span class="aui-icon icon-hint">Icon</span>
<div class="message-content">
-
-<p>The <code>ThrottlingInflightRoutePolicy</code> compared to <a shape="rect"
href="throttler.html">Throttler</a> is that it does <strong>not</strong> block
during throttling. It does throttling that is approximate based, meaning that
its more coarse grained and not explicit precise as the <a shape="rect"
href="throttler.html">Throttler</a>. The <a shape="rect"
href="throttler.html">Throttler</a> can be much more accurate and only allow a
specific number of messages being passed per a given time unit. Also the
<code>ThrottlingInflightRoutePolicy</code> is based its metrics on number of
inflight exchanges where as <a shape="rect" href="throttler.html">Throttler</a>
is based on number of messages per time unit.</p>
+ <p>The <code>ThrottlingInflightRoutePolicy</code>
compared to <a shape="rect" href="throttler.html">Throttler</a> is that it does
<strong>not</strong> block during throttling. It does throttling that is
approximate based, meaning that its more coarse grained and not explicit
precise as the <a shape="rect" href="throttler.html">Throttler</a>. The <a
shape="rect" href="throttler.html">Throttler</a> can be much more accurate and
only allow a specific number of messages being passed per a given time unit.
Also the <code>ThrottlingInflightRoutePolicy</code> is based its metrics on
number of inflight exchanges where as <a shape="rect"
href="throttler.html">Throttler</a> is based on number of messages per time
unit.</p>
</div>
</div>
-
-
-<h4
id="RoutePolicy-ScheduledRoutePolicy(SimpleandCronbased)usingcamelQuartz">ScheduledRoutePolicy
(Simple and Cron based) using camel Quartz</h4>
-
-<p>For more details check out the following links</p>
-
-<h3 id="RoutePolicy-Configuringpolicy">Configuring policy</h3>
-
-<p>You configure the route policy as follows from Java DSL, using the
<code>routePolicy</code> method:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
- RoutePolicy myPolicy = new MyRoutePolicy();
+<h4
id="RoutePolicy-ScheduledRoutePolicy(SimpleandCronbased)usingcamelQuartz">ScheduledRoutePolicy
(Simple and Cron based) using camel Quartz</h4><p>For more details check out
the following links</p><h3 id="RoutePolicy-Configuringpolicy">Configuring
policy</h3><p>You configure the route policy as follows from Java DSL, using
the <code>routePolicy</code> method:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[ RoutePolicy myPolicy = new MyRoutePolicy();
from("seda:foo").routePolicy(myPolicy).to("mock:result");
]]></script>
-</div></div>
-
-<p>In Spring XML its a bit different as follows using the
<code>routePolicyRef</code> attribute:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
- <bean id="myPolicy"
class="com.mycompany.MyRoutePolicy"/>
+</div></div><p>In Spring XML its a bit different as follows using the
<code>routePolicyRef</code> attribute:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[ <bean id="myPolicy"
class="com.mycompany.MyRoutePolicy"/>
<route routePolicyRef="myPolicy">
<from uri="seda:foo"/>
<to uri="mock:result"/>
</route>
]]></script>
-</div></div>
-
-<h3 id="RoutePolicy-Configuringpolicysets">Configuring policy sets</h3>
-<p><strong>Available as of Camel 2.7</strong></p>
-
-<p>RoutePolicy has been further improved to allow addition of policy sets or a
collection of policies that are concurrently applied on a route. The addition
of policies is done as follows.</p>
-
-<p>In the example below, the route testRoute has a startPolicy and
throttlePolicy applied concurrently. Both policies are applied as necessary on
the route.</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
- <bean id="date"
class="org.apache.camel.routepolicy.quartz.SimpleDate"/>
+</div></div><h3 id="RoutePolicy-Configuringpolicysets">Configuring policy
sets</h3><p><strong>Available as of Camel 2.7</strong></p><p>RoutePolicy has
been further improved to allow addition of policy sets or a collection of
policies that are concurrently applied on a route. The addition of policies is
done as follows.</p><p>In the example below, the route testRoute has a
startPolicy and throttlePolicy applied concurrently. Both policies are applied
as necessary on the route.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[ <bean id="date"
class="org.apache.camel.routepolicy.quartz.SimpleDate"/>
<bean id="startPolicy"
class="org.apache.camel.routepolicy.quartz.SimpleScheduledRoutePolicy">
<property name="routeStartDate" ref="date"/>
@@ -191,10 +132,21 @@ And also the implementation of the <code
</camelContext>
</route>
]]></script>
-</div></div>
-
-<h3 id="RoutePolicy-SeeAlso">See Also</h3>
-<ul class="alternate"><li><a shape="rect"
href="route-throttling-example.html">Route Throttling Example</a> for an
example using this in practice with the
ThrottlingInflightRoutePolicy</li><li><a shape="rect"
href="scheduledroutepolicy.html">ScheduledRoutePolicy</a> for information on
policy based scheduling capability for camel routes</li><li><a shape="rect"
href="architecture.html">Architecture</a></li></ul></div>
+</div></div><h3 id="RoutePolicy-UsingRoutePolicyFactory">Using
RoutePolicyFactory</h3><p><strong>Available as of Camel 2.14</strong></p><p>If
you want to use a route policy for every route, you can use
a <code>org.apache.camel.spi.RoutePolicyFactory</code> as a factory for
creating a <code>RoutePolicy</code> instance for each route. This can be
used when you want to use the same kind of route policy for every routes. Then
you need to only configure the factory once, and every route created will have
the policy assigned.</p><p>There is API on CamelContext to add a factory, as
shown below</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[context.addRoutePolicyFactory(new
MyRoutePolicyFactory());]]></script>
+</div></div><p>And from XML DSL you just define a <bean> with the
factory</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[<bean id="myRoutePolicyFactory"
class="com.foo.MyRoutePolicyFactory"/>]]></script>
+</div></div><p>The factory has a single method that creates the route
policy</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[ /**
+ * Creates a new {@link org.apache.camel.spi.RoutePolicy} which will be
assigned to the given route.
+ *
+ * @param camelContext the camel context
+ * @param routeId the route id
+ * @param route the route definition
+ * @return the created {@link org.apache.camel.spi.RoutePolicy}, or
<tt>null</tt> to not use a policy for this route
+ */
+ RoutePolicy createRoutePolicy(CamelContext camelContext, String routeId,
RouteDefinition route);]]></script>
+</div></div><p>Note you can have as many route policy factories as you want.
Just call the addRoutePolicyFactory again, or declare the other factories as
<bean> in XML.</p><h3 id="RoutePolicy-SeeAlso">See Also</h3><ul
class="alternate"><li><a shape="rect"
href="route-throttling-example.html">Route Throttling Example</a> for an
example using this in practice with the
ThrottlingInflightRoutePolicy</li><li><a shape="rect"
href="scheduledroutepolicy.html">ScheduledRoutePolicy</a> for information on
policy based scheduling capability for camel routes</li><li><a shape="rect"
href="architecture.html">Architecture</a></li></ul></div>
</td>
<td valign="top">
<div class="navigation">