camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r1014280 - in /websites/production/camel/content: cache/main.pageCache routepolicy.html
Date Tue, 20 Jun 2017 17:18:48 GMT
Author: buildbot
Date: Tue Jun 20 17:18:48 2017
New Revision: 1014280

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 Tue Jun 20 17:18:48 2017
@@ -85,42 +85,40 @@
 	<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 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">
+<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 <strong><code>org.apache.camel.spi.RoutePolicy</code></strong>
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 <strong><code>RoutePolicy</code></strong> and then during
runtime Camel will invoke callbacks on this policy where you can implement your custom logic.
Camel provides a support class that is a good base class to extend <strong><code>org.apache.camel.impl.RoutePolicySupport</code></strong>.</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 <strong><code>org.apache.camel.spi.RoutePolicy</code></strong>
for more details. And also the implementation of the <strong><code>org.apache.camel.impl.ThrottlingInflightRoutePolicy</code></strong>
for a concrete example.</p><p>Camel provides the following policies out of the
box:</p><ul class="alternate"><li><p><strong><code>org.apache.camel.impl.ThrottlingInflightRoutePolicy</code></strong>
- a throttling based policy that automatic suspends/resumes route(s) based on metrics from
the current in flight exchanges. You can use this to dynamically throttle e.g. a <a shape="rect"
href="jms.html">JMS</a> consumer, to avoid it consuming too fast.</p></li></ul><p>As
of <strong>Camel 2.5</strong>, Camel also
  provides an ability to schedule routes to be activated, deactivated, 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="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 <strong><code>org.apache.camel.impl.ThrottlingRoutePolicy</code></strong>
does then its advised to use <strong><code>org.apache.camel.SuspendableService</code></strong>
as it allows for fine grained <strong><code>suspend</code></strong>
and <strong><code>resume</code></strong> operations. And use the <strong><code>org.apache.camel.util.Serv
 iceHelper</code></strong> to aid when invoking these operations as it support
fallback for regular <strong><code>org.apache.camel.Service</code></strong>
instances.</p></div></div><h4 id="RoutePolicy-ThrottlingInflightRoutePolicy"><code>ThrottlingInflightRoutePolicy</code></h4><p>The&#160;<strong><code>ThrottlingInflightRoutePolicy</code></strong>
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><code>scope</code></p><
 /td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Route</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A scope for either <strong><code>Route</code></strong>
or <strong><code>Context</code></strong> 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><code>maxInflightExchanges</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></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><code>resumePercentOfMax</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>70</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A percentage&#160;<strong><code>0..100
 </code></strong> 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><code>loggingLevel</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>INFO</code></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><code>logger</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><code>ThrottlingInflightRoutePolicy</code></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-informati
 on-macro-body"><p>The <strong><code>ThrottlingInflightRoutePolicy</code></strong>
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 <strong><code>ThrottlingInflightRoutePolicy</code></strong>
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"><code>ScheduledRoutePolicy</code>
(Simple and Cron based) using camel Quartz</h4><p>For more details check out the
following links</p><h
 3 id="RoutePolicy-ConfiguringPolicy">Configuring Policy</h3><p>You configure
the route policy as follows from Java DSL, using the <strong><code>routePolicy</code></strong>
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(&quot;seda:foo&quot;).routePolicy(myPolicy).to(&quot;mock:result&quot;);
 ]]></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="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
  &lt;bean id=&quot;myPolicy&quot; class=&quot;com.mycompany.MyRoutePolicy&quot;/&gt;
+</div></div><p>In Spring XML its a bit different as follows using the <strong><code>routePolicyRef</code></strong>
attribute:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;bean
id=&quot;myPolicy&quot; class=&quot;com.mycompany.MyRoutePolicy&quot;/&gt;
    
-   &lt;route routePolicyRef=&quot;myPolicy&quot;&gt;
-       &lt;from uri=&quot;seda:foo&quot;/&gt;
-       &lt;to uri=&quot;mock:result&quot;/&gt;
-   &lt;/route&gt;
+&lt;route routePolicyRef=&quot;myPolicy&quot;&gt;
+    &lt;from uri=&quot;seda:foo&quot;/&gt;
+    &lt;to uri=&quot;mock:result&quot;/&gt;
+&lt;/route&gt;
 ]]></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="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
  &lt;bean id=&quot;date&quot; class=&quot;org.apache.camel.routepolicy.quartz.SimpleDate&quot;/&gt;
+</div></div><h3 id="RoutePolicy-ConfiguringPolicySets">Configuring Policy
Sets</h3><p><strong>Available as of Camel 2.7</strong></p><p><strong><code>RoutePolicy</code></strong>
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&#160;<strong><code>testRoute</code></strong>
has a&#160;<strong><code>startPolicy</code></strong> and&#160;<strong><code>throttlePolicy</code></strong>
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="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;bean
id=&quot;date&quot; class=&quot;org.apache.camel.routepolicy.quartz.SimpleDate&quot;/&gt;
 
-    &lt;bean id=&quot;startPolicy&quot; class=&quot;org.apache.camel.routepolicy.quartz.SimpleScheduledRoutePolicy&quot;&gt;
-    	&lt;property name=&quot;routeStartDate&quot; ref=&quot;date&quot;/&gt;
-    	&lt;property name=&quot;routeStartRepeatCount&quot; value=&quot;1&quot;/&gt;
-    	&lt;property name=&quot;routeStartRepeatInterval&quot; value=&quot;3000&quot;/&gt;
   	
-    &lt;/bean&gt;
-    
-    &lt;bean id=&quot;throttlePolicy&quot; class=&quot;org.apache.camel.impl.ThrottlingInflightRoutePolicy&quot;&gt;
-    	&lt;property name=&quot;maxInflightExchanges&quot; value=&quot;10&quot;/&gt;
   	
-	&lt;/bean&gt;
-	 	
-    &lt;camelContext id=&quot;testRouteContext&quot; xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-        &lt;route id=&quot;testRoute&quot; autoStartup=&quot;false&quot;
routePolicyRef=&quot;startPolicy, throttlePolicy&quot;&gt;
-            &lt;from uri=&quot;seda:foo?concurrentConsumers=20&quot;/&gt;
-            &lt;to uri=&quot;mock:result&quot;/&gt;
-        &lt;/route&gt;
-    &lt;/camelContext&gt;
-   &lt;/route&gt;
-]]></script>
-</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&#160;<code>org.apache.camel.spi.RoutePolicyFactory</code>
as a factory for creating a&#160;<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">
+&lt;bean id=&quot;startPolicy&quot; class=&quot;org.apache.camel.routepolicy.quartz.SimpleScheduledRoutePolicy&quot;&gt;
+  &lt;property name=&quot;routeStartDate&quot; ref=&quot;date&quot;/&gt;
+  &lt;property name=&quot;routeStartRepeatCount&quot; value=&quot;1&quot;/&gt;
+  &lt;property name=&quot;routeStartRepeatInterval&quot; value=&quot;3000&quot;/&gt;
       
+&lt;/bean&gt;
+
+&lt;bean id=&quot;throttlePolicy&quot; class=&quot;org.apache.camel.impl.ThrottlingInflightRoutePolicy&quot;&gt;
+  &lt;property name=&quot;maxInflightExchanges&quot; value=&quot;10&quot;/&gt;
       
+&lt;/bean&gt;
+         
+&lt;camelContext id=&quot;testRouteContext&quot; xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
+  &lt;route id=&quot;testRoute&quot; autoStartup=&quot;false&quot; routePolicyRef=&quot;startPolicy,
throttlePolicy&quot;&gt;
+    &lt;from uri=&quot;seda:foo?concurrentConsumers=20&quot;/&gt;
+    &lt;to uri=&quot;mock:result&quot;/&gt;
+  &lt;/route&gt;
+&lt;/camelContext&gt;]]></script>
+</div></div><h3 id="RoutePolicy-UsingRoutePolicyFactory">Using&#160;<code>RoutePolicyFactory</code></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&#160;<strong><code>org.apache.camel.spi.RoutePolicyFactory</code></strong>
as a factory for creating a&#160;<strong><code>RoutePolicy</code></strong>
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="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[context.addRoutePolicyFactory(new
MyRoutePolicyFactory());]]></script>
-</div></div><p>And from XML DSL you just define a &lt;bean&gt;
with the factory</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+</div></div><p>And from XML DSL you just define a&#160;<strong><code>&lt;bean&gt;</code></strong>
with the factory</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[&lt;bean
id=&quot;myRoutePolicyFactory&quot; class=&quot;com.foo.MyRoutePolicyFactory&quot;/&gt;]]></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="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
   /**
@@ -132,7 +130,7 @@
      * @return the created {@link org.apache.camel.spi.RoutePolicy}, or &lt;tt&gt;null&lt;/tt&gt;
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 &lt;bean&gt;
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="metrics-component.html">MetricsRoutePolicyFactory</a> for information on a
policy using the metrics component to expose route statistics using the metrics library.</li><li><a
shape="rect" href="architecture.html">Architecture</a></li></ul></div>
+</div></div><p>Note you can have as many route policy factories as you
want. Just call the&#160;<strong><code>addRoutePolicyFactory</code></strong>
again, or declare the other factories as&#160;<strong><code>&lt;bean&gt;</code></strong>
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&#160;<strong><code>ThrottlingInflightRoutePolicy</code></strong></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="metrics-component.html">MetricsRoutePolicyFactory</a> for information on a
policy using the metrics component to expose route statistics using the metrics library.</li><li><a
shape="rect" href="architecture.html">Architecture</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">



Mime
View raw message