Author: buildbot
Date: Fri May 19 17:18:52 2017
New Revision: 1012531
Log:
Production update by buildbot for camel
Modified:
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/routepolicy.html
Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/camel/content/routepolicy.html
==============================================================================
--- websites/production/camel/content/routepolicy.html (original)
+++ websites/production/camel/content/routepolicy.html Fri May 19 17:18:52 2017
@@ -85,7 +85,7 @@
<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>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="confluence-information-macro confluence-information-macro-tip"><p
class="title">SuspendableService</p><span class="aui-icon aui-icon-small
aui-iconfont-approve confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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="Route
Policy-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 b
ased 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><t
d 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="confluence-information-macro
confluence-information-macro-information"><p
class="title">ThrottlingInflightRoutePolicy compared to the [Throttler]
EIP</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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">
+<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="confluence-information-macro confluence-information-macro-tip"><p
class="title">SuspendableService</p><span class="aui-icon aui-icon-small
aui-iconfont-approve confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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="Route
Policy-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 b
ased 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 inflight 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><t
d 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="confluence-information-macro
confluence-information-macro-information"><p
class="title">ThrottlingInflightRoutePolicy compared to the [Throttler]
EIP</p><span class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[ RoutePolicy myPolicy = new MyRoutePolicy();
from("seda:foo").routePolicy(myPolicy).to("mock:result");
]]></script>