Modified: websites/production/camel/content/camel-jmx.html
==============================================================================
--- websites/production/camel/content/camel-jmx.html (original)
+++ websites/production/camel/content/camel-jmx.html Sun Jul  9 22:38:25 2017
@@ -207,7 +207,7 @@ java.lang.SecurityException: Unauthorize
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[SUNJMX=-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=1616 \
 -Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
 ]]></script>
-</div></div><p>(The&#160;<strong><code>SUNJMX</code></strong> environment 
variable is simple used by the startup script for Camel, as additional startup 
parameters for the JVM. If you start Camel directly, you'll have to pass these 
parameters yourself.)</p><h4 id="CamelJMX-jmxAgentPropertiesReference">jmxAgent 
Properties Reference</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Spring property</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>System property</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>id</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The JMX agent name, and i
 t is not optional.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>usePlatformMBeanServer</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.usePlatformMBeanServer</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code>, 
<code>true</code> - Release 1.5 or later</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If <code>true</code>, it will use the 
<strong><code>MBeanServer</code></strong> from the JVM.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>mbeanServerDefaultDomain</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.mbeanServerDefaultDomain</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The default JMX domain of the 
<strong><code>MBeanServer</code></strong>.</p></td></tr><tr><td colspan="1"
  rowspan="1" 
class="confluenceTd"><p><code>mbeanObjectDomainName</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.mbeanObjectDomainName</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The JMX domain that all object names will 
use.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>createConnector</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.createRmiConnect</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If we should create a JMX 
connector (to allow remote management) for the 
<strong><code>MBeanServer</code></strong>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>registryPort</code></p></td><td 
colspan="1" rowspan="1" class="confluence
 Td"><p><code>org.apache.camel.jmx.rmiConnector.registryPort</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>1099</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The port that the JMX RMI 
registry will use.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>connectorPort</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.rmiConnector.connectorPort</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>-1 (dynamic)</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The port that the JMX RMI 
server will use.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>serviceUrlPath</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.serviceUrlPath</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>/jmxrmi/camel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>T
 he path that JMX connector will be registered under.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>onlyRegisterProcessorWithCustomId</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.onlyRegisterProcessorWithCustomId</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.0:</strong> If 
this option is enabled then only processors with a custom id set will be 
registered. This allows you to filer out unwanted processors in the JMX 
console.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statisticsLevel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>All / Default</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> Configures the 
level for whether per
 formance statistics is enabled for the MBean. See section <em>Configuring 
level of granularity for performance statistics</em> for more details. 
</p><p><strong>From Camel 2.16</strong>: 
the&#160;<strong><code>All</code></strong> option is renamed to 
<strong><code>Default</code></strong>, and a 
new&#160;<strong><code>Extended</code></strong> option has been introduced 
which allows gathered additional run time JMX metrics.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>includeHostName</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.includeHostName</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.13:</strong> Whether to 
include the hostname in the MBean naming. <strong>From Camel 2.13</strong>: the 
default is <strong><code>false</code></strong>. Previously the default was 
<strong><code>true</code></strong>.</p><p>
 You can use this option to restore old behavior if really 
needed.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHostIPAddress</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.useHostIPAddress</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> 
Whether to use hostname or IP Address in the service url when creating the 
remote connector. By default the hostname will be used.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>loadStatisticsEnabled</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.loadStatisticsEnabled</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
2.16:</strong>Whether load statistics is enabled 
 (gathers load statistics using a background thread per 
CamelContext).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>endpointRuntimeStatisticsEnabled</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.endpointRuntimeStatisticsEnabled</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> 
Whether endpoint runtime statistics is enabled (gathers runtime usage of each 
incoming and outgoing endpoints).</p></td></tr></tbody></table></div><h4 
id="CamelJMX-ConfiguringWhethertoRegisterMBeansalways,ForNewRoutesorJustbyDefault">Configuring
 Whether to Register MBeans always, For New Routes or Just by 
Default</h4><p><strong>Available as of Camel 2.7</strong></p><p>Camel now 
offers 2 settings to control whether or not to register mbeans</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th c
 olspan="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>registerAlways</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If enabled then MBeans is 
always registered.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>registerNewRoutes</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>If enabled then adding new routes after <a 
shape="rect" href="camelcontext.html">CamelContext</a> has been started will 
also register MBeans from that given 
route.</p></td></tr></tbody></table></div><p>By default Camel registers MBeans 
for all the routes configured when its starting.
  The <strong><code>registerNewRoutes</code></strong> option control if MBeans 
should also be registered if you add new routes thereafter. You can disable 
this, if you for example add and remove temporary routes where management is 
not needed.</p><p>Be a bit caution to use the 
<strong><code>registerAlways</code></strong> option when using dynamic <a 
shape="rect" href="eip.html">EIP</a> patterns such as the <a shape="rect" 
href="recipient-list.html">Recipient List</a> having unique endpoints. If so 
then each unique endpoint and its associated services/producers would also be 
registered. This could potential lead to degradation in system performance due 
the rising number of mbeans in the registry. A MBean is not a light-weight 
object and thus consumes memory.</p><h3 
id="CamelJMX-MonitoringCamelusingJMX">Monitoring Camel using JMX</h3><h4 
id="CamelJMX-UsingJConsoletomonitorCamel">Using JConsole to monitor 
Camel</h4><p>The <strong><code>CamelContext</code></strong> should appear in 
the l
 ist of local connections, if you are running JConsole on the same host as 
Camel.&#160; To connect to a remote Camel instance, or if the local process 
does not show up, use Remote Process option, and enter an URL.</p><p>Here is an 
example localhost 
URL:&#160;<strong><code>service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel</code></strong></p><p>Using
 the Apache Camel with JConsole</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-content-image-border" src="camel-jmx.data/camel-jmx.png" 
data-image-src="/confluence/download/attachments/85697/camel-jmx.png?version=1&amp;modificationDate=1224680681000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9224" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="camel-jmx.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="85
 697" data-linked-resource-container-version="84"></span></p><h4 
id="CamelJMX-Whichendpointsareregistered">Which endpoints are 
registered</h4><p>In <strong>Camel 2.1</strong> onward <strong>only</strong> 
<code>singleton</code> endpoints are registered as the overhead for non 
singleton will be substantial in cases where thousands or millions of endpoints 
are used. This can happens when using a <a shape="rect" 
href="recipient-list.html">Recipient List</a> EIP or from a 
<strong><code>ProducerTemplate</code></strong> that sends a lot of 
messages.</p><h4 id="CamelJMX-Whichprocessorsareregistered">Which processors 
are registered</h4><p>See <a shape="rect" 
href="why-is-my-processor-not-showing-up-in-jconsole.html">this FAQ</a>.</p><h4 
id="CamelJMX-HowtousetheJMXNotificationListenertolistenthecamelevents?">How to 
use the JMX NotificationListener to listen the camel events?</h4><p>The Camel 
notification events give a coarse grained overview what is happening. You can 
see lifecycle event from 
 context and endpoints and you can see exchanges being received by and sent to 
endpoints. From <strong>Camel 2.4</strong> you can use a custom JMX 
NotificationListener to listen the camel events.</p><p>First you need to set up 
a&#160;<strong><code>JmxNotificationEventNotifier</code></strong> before you 
start the CamelContext.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div><p>(The&#160;<strong><code>SUNJMX</code></strong> environment 
variable is simple used by the startup script for Camel, as additional startup 
parameters for the JVM. If you start Camel directly, you'll have to pass these 
parameters yourself.)</p><h4 id="CamelJMX-jmxAgentPropertiesReference">jmxAgent 
Properties Reference</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Spring property</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>System property</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>id</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The JMX agent name, and i
 t is not optional.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>usePlatformMBeanServer</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.usePlatformMBeanServer</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code>, 
<code>true</code> - Release 1.5 or later</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If <code>true</code>, it will use the 
<strong><code>MBeanServer</code></strong> from the JVM.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>mbeanServerDefaultDomain</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.mbeanServerDefaultDomain</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The default JMX domain of the 
<strong><code>MBeanServer</code></strong>.</p></td></tr><tr><td colspan="1"
  rowspan="1" 
class="confluenceTd"><p><code>mbeanObjectDomainName</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.mbeanObjectDomainName</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The JMX domain that all object names will 
use.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>createConnector</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.createRmiConnect</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If we should create a JMX 
connector (to allow remote management) for the 
<strong><code>MBeanServer</code></strong>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>registryPort</code></p></td><td 
colspan="1" rowspan="1" class="confluence
 Td"><p><code>org.apache.camel.jmx.rmiConnector.registryPort</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>1099</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The port that the JMX RMI 
registry will use.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>connectorPort</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.rmiConnector.connectorPort</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>-1 (dynamic)</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The port that the JMX RMI 
server will use.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>serviceUrlPath</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.serviceUrlPath</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>/jmxrmi/camel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>T
 he path that JMX connector will be registered under.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>onlyRegisterProcessorWithCustomId</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.onlyRegisterProcessorWithCustomId</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.0:</strong> If 
this option is enabled then only processors with a custom id set will be 
registered. This allows you to filer out unwanted processors in the JMX 
console.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statisticsLevel</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>All / Default</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> Configures the 
level for whether per
 formance statistics is enabled for the MBean. See section <em>Configuring 
level of granularity for performance statistics</em> for more details. 
</p><p><strong>From Camel 2.16</strong>: 
the&#160;<strong><code>All</code></strong> option is renamed to 
<strong><code>Default</code></strong>, and a 
new&#160;<strong><code>Extended</code></strong> option has been introduced 
which allows gathered additional run time JMX metrics.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>includeHostName</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.includeHostName</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.13:</strong> Whether to 
include the hostname in the MBean naming. <strong>From Camel 2.13</strong>: the 
default is <strong><code>false</code></strong>. Previously the default was 
<strong><code>true</code></strong>.</p><p>
 You can use this option to restore old behavior if really 
needed.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHostIPAddress</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.useHostIPAddress</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> 
Whether to use hostname or IP Address in the service url when creating the 
remote connector. By default the hostname will be used.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>loadStatisticsEnabled</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.loadStatisticsEnabled</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
2.16:</strong>Whether load statistics is enabled 
 (gathers load statistics using a background thread per 
CamelContext).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>endpointRuntimeStatisticsEnabled</code></p></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.jmx.endpointRuntimeStatisticsEnabled</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.16:</strong> 
Whether endpoint runtime statistics is enabled (gathers runtime usage of each 
incoming and outgoing endpoints).</p></td></tr></tbody></table></div><h4 
id="CamelJMX-ConfiguringWhethertoRegisterMBeansalways,ForNewRoutesorJustbyDefault">Configuring
 Whether to Register MBeans always, For New Routes or Just by 
Default</h4><p><strong>Available as of Camel 2.7</strong></p><p>Camel now 
offers 2 settings to control whether or not to register mbeans</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th c
 olspan="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>registerAlways</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If enabled then MBeans is 
always registered.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>registerNewRoutes</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>If enabled then adding new routes after <a 
shape="rect" href="camelcontext.html">CamelContext</a> has been started will 
also register MBeans from that given 
route.</p></td></tr></tbody></table></div><p>By default Camel registers MBeans 
for all the routes configured when its starting.
  The <strong><code>registerNewRoutes</code></strong> option control if MBeans 
should also be registered if you add new routes thereafter. You can disable 
this, if you for example add and remove temporary routes where management is 
not needed.</p><p>Be a bit caution to use the 
<strong><code>registerAlways</code></strong> option when using dynamic <a 
shape="rect" href="eip.html">EIP</a> patterns such as the <a shape="rect" 
href="recipient-list.html">Recipient List</a> having unique endpoints. If so 
then each unique endpoint and its associated services/producers would also be 
registered. This could potential lead to degradation in system performance due 
the rising number of mbeans in the registry. A MBean is not a light-weight 
object and thus consumes memory.</p><h3 
id="CamelJMX-MonitoringCamelusingJMX">Monitoring Camel using JMX</h3><h4 
id="CamelJMX-UsingJConsoletomonitorCamel">Using JConsole to monitor 
Camel</h4><p>The <strong><code>CamelContext</code></strong> should appear in 
the l
 ist of local connections, if you are running JConsole on the same host as 
Camel.&#160; To connect to a remote Camel instance, or if the local process 
does not show up, use Remote Process option, and enter an URL.</p><p>Here is an 
example localhost 
URL:&#160;<strong><code>service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel</code></strong></p><p>Using
 the Apache Camel with JConsole</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-content-image-border" src="camel-jmx.data/camel-jmx.png" 
data-image-src="/confluence/download/attachments/85697/camel-jmx.png?version=1&amp;modificationDate=1224680681000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9224" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="camel-jmx.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="85
 697" data-linked-resource-container-version="85"></span></p><h4 
id="CamelJMX-Whichendpointsareregistered">Which endpoints are 
registered</h4><p>In <strong>Camel 2.1</strong> onward <strong>only</strong> 
<code>singleton</code> endpoints are registered as the overhead for non 
singleton will be substantial in cases where thousands or millions of endpoints 
are used. This can happens when using a <a shape="rect" 
href="recipient-list.html">Recipient List</a> EIP or from a 
<strong><code>ProducerTemplate</code></strong> that sends a lot of 
messages.</p><h4 id="CamelJMX-Whichprocessorsareregistered">Which processors 
are registered</h4><p>See <a shape="rect" 
href="why-is-my-processor-not-showing-up-in-jconsole.html">this FAQ</a>.</p><h4 
id="CamelJMX-HowtousetheJMXNotificationListenertolistenthecamelevents?">How to 
use the JMX NotificationListener to listen the camel events?</h4><p>The Camel 
notification events give a coarse grained overview what is happening. You can 
see lifecycle event from 
 context and endpoints and you can see exchanges being received by and sent to 
endpoints. From <strong>Camel 2.4</strong> you can use a custom JMX 
NotificationListener to listen the camel events.</p><p>First you need to set up 
a&#160;<strong><code>JmxNotificationEventNotifier</code></strong> before you 
start the CamelContext.</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[
 // Set up the JmxNotificationEventNotifier
 notifier = new JmxNotificationEventNotifier();
@@ -236,7 +236,7 @@ context.getManagementStrategy().getManag
     }, null);
 
 ]]></script>
-</div></div><h4 id="CamelJMX-UsingtheTracerMBeantogetfinegrainedtracing">Using 
the Tracer MBean to get fine grained tracing</h4><p>Additionally to the coarse 
grained notifications above <strong>Camel 2.9.0</strong> support JMX 
Notification for fine grained trace events. These can be found in the Tracer 
MBean. To activate fine grained tracing you first need to activate tracing on 
the context or on a route. This can either be done when configuring the context 
or on the context / route MBeans.</p><p>As a second step you have to set the 
<strong><code>jmxTraceNotifications</code></strong> attribute to 
<code>true</code> on the tracer. This can again be done when configuring the 
context or at run time on the tracer MBean.</p><p>Now you can register 
for&#160;<code>TraceEvent</code> Notifications on the Tracer MBean using 
JConsole. There will be one Notification for every step on the route with all 
exchange and message details.</p><p><span 
class="confluence-embedded-file-wrapper"><img class=
 "confluence-embedded-image confluence-content-image-border" 
src="camel-jmx.data/jconsole_trace_notifications.png" 
data-image-src="/confluence/download/attachments/85697/jconsole_trace_notifications.png?version=1&amp;modificationDate=1317961747000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="28016788" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="jconsole_trace_notifications.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="85697" 
data-linked-resource-container-version="84"></span></p><h3 
id="CamelJMX-UsingJMXforyourownCamelCode">Using JMX for your own Camel 
Code</h3><h4 id="CamelJMX-RegisteringyourownManagedEndpoints">Registering your 
own Managed Endpoints</h4><p><strong>Available as of Camel 2.0</strong><br 
clear="none"> You can decorate your own endpoints with Spring managed 
annotations <strong><code>@Manage
 dResource</code></strong> to allow to register them in the Camel 
<strong><code>MBeanServer</code></strong> and thus access your custom MBeans 
using JMX.<br clear="none"> <strong>Notice:</strong> in <strong>Camel 
2.1</strong> we have changed this to apply other than just endpoints but then 
you need to implement the interface 
<strong><code>org.apache.camel.spi.ManagementAware</code></strong> as well. 
More about this later.</p><p>For example we have the following custom endpoint 
where we define some options to be managed:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h4 id="CamelJMX-UsingtheTracerMBeantogetfinegrainedtracing">Using 
the Tracer MBean to get fine grained tracing</h4><p>Additionally to the coarse 
grained notifications above <strong>Camel 2.9.0</strong> support JMX 
Notification for fine grained trace events. These can be found in the Tracer 
MBean. To activate fine grained tracing you first need to activate tracing on 
the context or on a route. This can either be done when configuring the context 
or on the context / route MBeans.</p><p>As a second step you have to set the 
<strong><code>jmxTraceNotifications</code></strong> attribute to 
<code>true</code> on the tracer. This can again be done when configuring the 
context or at run time on the tracer MBean.</p><p>Now you can register 
for&#160;<code>TraceEvent</code> Notifications on the Tracer MBean using 
JConsole. There will be one Notification for every step on the route with all 
exchange and message details.</p><p><span 
class="confluence-embedded-file-wrapper"><img class=
 "confluence-embedded-image confluence-content-image-border" 
src="camel-jmx.data/jconsole_trace_notifications.png" 
data-image-src="/confluence/download/attachments/85697/jconsole_trace_notifications.png?version=1&amp;modificationDate=1317961747000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="28016788" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="jconsole_trace_notifications.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="85697" 
data-linked-resource-container-version="85"></span></p><h3 
id="CamelJMX-UsingJMXforyourownCamelCode">Using JMX for your own Camel 
Code</h3><h4 id="CamelJMX-RegisteringyourownManagedEndpoints">Registering your 
own Managed Endpoints</h4><p><strong>Available as of Camel 2.0</strong><br 
clear="none"> You can decorate your own endpoints with Spring managed 
annotations <strong><code>@Manage
 dResource</code></strong> to allow to register them in the Camel 
<strong><code>MBeanServer</code></strong> and thus access your custom MBeans 
using JMX.<br clear="none"> <strong>Notice:</strong> in <strong>Camel 
2.1</strong> we have changed this to apply other than just endpoints but then 
you need to implement the interface 
<strong><code>org.apache.camel.spi.ManagementAware</code></strong> as well. 
More about this later.</p><p>For example we have the following custom endpoint 
where we define some options to be managed:</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[
 @ManagedResource(description = &quot;Our custom managed endpoint&quot;)
 public class CustomEndpoint extends MockEndpoint implements 
ManagementAware&lt;CustomEndpoint&gt; {

Modified: websites/production/camel/content/console-example.html
==============================================================================
--- websites/production/camel/content/console-example.html (original)
+++ websites/production/camel/content/console-example.html Sun Jul  9 22:38:25 
2017
@@ -141,7 +141,7 @@ Enter something:
 <p>Next, navigate to the 
<code>org.apache.camel.example.console.CamelConsoleMain</code> class, 
right-click, and select Run As &#8594; Java Application.</p>
 <div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
 <p>Click on the screenshot below, to make it bigger.</p></div></div>
-<p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-thumbnail" 
src="console-example.thumbs/run-as.png" 
data-image-src="/confluence/download/attachments/27843710/run-as.png?version=1&amp;modificationDate=1334026057000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="28017569" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="run-as.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="27843710" 
data-linked-resource-container-version="19"></span></p>
+<p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image confluence-thumbnail" 
src="console-example.thumbs/run-as.png" 
data-image-src="/confluence/download/attachments/27843710/run-as.png?version=1&amp;modificationDate=1334026057000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="28017569" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="run-as.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="27843710" 
data-linked-resource-container-version="20"></span></p>
 
 
 <h3 id="ConsoleExample-Seealso">See also</h3>

Modified: websites/production/camel/content/debugger.html
==============================================================================
--- websites/production/camel/content/debugger.html (original)
+++ websites/production/camel/content/debugger.html Sun Jul  9 22:38:25 2017
@@ -121,7 +121,7 @@ protected void debugBefore(Exchange exch
     log.info(&quot;Before &quot; + definition + &quot; with body &quot; + 
exchange.getIn().getBody());
 }
 ]]></script>
-</div></div>Then from your Java editor just add a breakpoint inside the 
<strong><code>debugBefore</code></strong> method. Then fire up the unit test 
and wait for the Java editor to hit the breakpoint. Then you can inspect the <a 
shape="rect" href="exchange.html">Exchange</a> during debugging while it 
advances during routing. The <strong><code>ProcessorDefinition</code></strong> 
and the <strong><code>id</code></strong> and 
<strong><code>shortName</code></strong> parameters is all information which 
tells you where in the route the breakpoint was hit.<div 
class="confluence-information-macro confluence-information-macro-tip"><span 
class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>There is also a 
<strong><code>debugAfter</code></strong> method which is invoked after the 
processor has been invoked. This allows you to <em>see</em> what happens to the 
<a shape="rect" href="exchange.html">Exchange</
 a> right after it has invoked a processor in the route.</p></div></div><p>The 
screenshot below shows the <a shape="rect" href="debugger.html">Debugger</a> in 
action. The IDE (IDEA) has hit the breakpoint and we can inspect the 
parameters. Notice how we can see that the message is to be send to 
the&#160;<strong><code>mock:a</code></strong> endpoint:</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src="debugger.data/debug.png" 
data-image-src="/confluence/download/attachments/86210/debug.png?version=1&amp;modificationDate=1288586116000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="24346680" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="debug.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="86210" 
data-linked-resource-container-version="37"></span></p><h3 id="Debugger-Se
 eAlso">See Also</h3><ul class="alternate"><li><a shape="rect" 
href="tracer.html">Tracer</a></li><li><a shape="rect" 
href="backlogdebugger.html">BacklogDebugger</a></li></ul></div>
+</div></div>Then from your Java editor just add a breakpoint inside the 
<strong><code>debugBefore</code></strong> method. Then fire up the unit test 
and wait for the Java editor to hit the breakpoint. Then you can inspect the <a 
shape="rect" href="exchange.html">Exchange</a> during debugging while it 
advances during routing. The <strong><code>ProcessorDefinition</code></strong> 
and the <strong><code>id</code></strong> and 
<strong><code>shortName</code></strong> parameters is all information which 
tells you where in the route the breakpoint was hit.<div 
class="confluence-information-macro confluence-information-macro-tip"><span 
class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>There is also a 
<strong><code>debugAfter</code></strong> method which is invoked after the 
processor has been invoked. This allows you to <em>see</em> what happens to the 
<a shape="rect" href="exchange.html">Exchange</
 a> right after it has invoked a processor in the route.</p></div></div><p>The 
screenshot below shows the <a shape="rect" href="debugger.html">Debugger</a> in 
action. The IDE (IDEA) has hit the breakpoint and we can inspect the 
parameters. Notice how we can see that the message is to be send to 
the&#160;<strong><code>mock:a</code></strong> endpoint:</p><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src="debugger.data/debug.png" 
data-image-src="/confluence/download/attachments/86210/debug.png?version=1&amp;modificationDate=1288586116000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="24346680" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="debug.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="86210" 
data-linked-resource-container-version="38"></span></p><h3 id="Debugger-Se
 eAlso">See Also</h3><ul class="alternate"><li><a shape="rect" 
href="tracer.html">Tracer</a></li><li><a shape="rect" 
href="backlogdebugger.html">BacklogDebugger</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/exception-clause.html
==============================================================================
--- websites/production/camel/content/exception-clause.html (original)
+++ websites/production/camel/content/exception-clause.html Sun Jul  9 22:38:25 
2017
@@ -513,6 +513,8 @@ public void configure() throws Exception
     // there is a header[user] on the exchange that is not null
     
onException(MyUserException.class).onWhen(header(&quot;user&quot;).isNotNull())
         .maximumRedeliveries(1)
+        // setting delay to zero is just to make unit testing faster
+        .redeliveryDelay(0)
         .to(ERROR_USER_QUEUE);
 
     // here we define onException to catch MyUserException as a kind
@@ -522,6 +524,8 @@ public void configure() throws Exception
     // have been defined
     onException(MyUserException.class)
         .maximumRedeliveries(2)
+        // setting delay to zero is just to make unit testing faster
+        .redeliveryDelay(0)
         .to(ERROR_QUEUE);
 ]]></script>
 </div></div>In the sample above we have two 
<strong><code>onException</code></strong>'s defined. The first has 
an&#160;<strong><code>onWhen</code></strong> expression attached to only 
trigger if the message has a header with the key user that is not null. If so 
this clause is selected and is handling the thrown exception. The second clause 
is a for coarse gained selection to select the same exception being thrown but 
when the expression is evaluated to false.<p><strong>Note:</strong> this is not 
required, if the second clause is omitted, then the default error handler will 
kick in.</p><h3 
id="ExceptionClause-UsingonRedeliveryProcessor">Using&#160;<code>onRedelivery</code>
 Processor</h3><p><strong>Available as of Camel 2.0</strong></p><p><a 
shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> has 
support for&#160;<strong><code>onRedelivery</code></strong> to allow custom 
processing of a Message before its being redelivered. It can be used to add 
some customer header o
 r whatnot. In Camel 2.0 we have added this feature to <a shape="rect" 
href="exception-clause.html">Exception Clause</a> as well, so you can use per 
exception scoped on redelivery. Camel will fallback to use the one defined on 
<a shape="rect" href="dead-letter-channel.html">Dead Letter Channel</a> if any, 
if none exists on the <a shape="rect" href="exception-clause.html">Exception 
Clause</a>. See <a shape="rect" href="dead-letter-channel.html">Dead Letter 
Channel</a> for more details on 
<strong><code>onRedelivery</code></strong>.</p><p>In the code below we want to 
do some custom code before redelivering any 
<strong><code>IOException</code></strong>. So we configure 
an&#160;<strong><code>onException</code></strong> for 
the&#160;<strong><code>IOException</code></strong> and set 
the&#160;<strong><code>onRedelivery</code></strong> to use our custom 
processor:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
@@ -531,6 +535,8 @@ public void configure() throws Exception
 onException(IOException.class)
         // try to redeliver at most 3 times
         .maximumRedeliveries(3)
+        // setting delay to zero is just to make unit testing faster
+        .redeliveryDelay(0)
         .onRedelivery(new MyIORedeliverProcessor());
 ]]></script>
 </div></div>And in our custom processor we set a special timeout header to the 
message. You can of course do anything what you like in your code.<div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
@@ -612,11 +618,13 @@ public void configure() throws Exception
 
     onException(MyPolicyException.class)
         .maximumRedeliveries(1)
+        .redeliveryDelay(0)
         .setHeader(MESSAGE_INFO, constant(&quot;Damm my policy 
exception&quot;))
         .to(ERROR_QUEUE);
 
     onException(CamelException.class)
         .maximumRedeliveries(3)
+        .redeliveryDelay(0)
         .setHeader(MESSAGE_INFO, constant(&quot;Damm a Camel exception&quot;))
         .to(ERROR_QUEUE);
 ]]></script>

Modified: websites/production/camel/content/file2.html
==============================================================================
--- websites/production/camel/content/file2.html (original)
+++ websites/production/camel/content/file2.html Sun Jul  9 22:38:25 2017
@@ -564,7 +564,7 @@ protected RouteBuilder createRouteBuilde
 
             // this is the file route that pickup files, notice how we use our 
custom exception handler on the consumer
             // the exclusiveReadLockStrategy is only configured because this 
is from an unit test, so we use that to simulate exceptions
-            
from(&quot;file:target/nospace?exclusiveReadLockStrategy=#myReadLockStrategy&amp;consumer.exceptionHandler=#myExceptionHandler&quot;)
+            
from(&quot;file:target/nospace?exclusiveReadLockStrategy=#myReadLockStrategy&amp;consumer.exceptionHandler=#myExceptionHandler&amp;initialDelay=0&amp;delay=10&quot;)
                 .convertBodyTo(String.class)
                 .to(&quot;mock:result&quot;);
         }
@@ -587,7 +587,7 @@ protected RouteBuilder createRouteBuilde
 
             // this is the file route that pickup files, notice how we bridge 
the consumer to use the Camel routing error handler
             // the exclusiveReadLockStrategy is only configured because this 
is from an unit test, so we use that to simulate exceptions
-            
from(&quot;file:target/nospace?exclusiveReadLockStrategy=#myReadLockStrategy&amp;consumer.bridgeErrorHandler=true&quot;)
+            
from(&quot;file:target/nospace?exclusiveReadLockStrategy=#myReadLockStrategy&amp;consumer.bridgeErrorHandler=true&amp;initialDelay=0&amp;delay=10&quot;)
                 .convertBodyTo(String.class)
                 .to(&quot;mock:result&quot;);
         }

Modified: 
websites/production/camel/content/how-can-i-stop-a-route-from-a-route.html
==============================================================================
--- websites/production/camel/content/how-can-i-stop-a-route-from-a-route.html 
(original)
+++ websites/production/camel/content/how-can-i-stop-a-route-from-a-route.html 
Sun Jul  9 22:38:25 2017
@@ -179,7 +179,7 @@ public void testStopRouteFromRoute() thr
     template.sendBody(&quot;direct:start&quot;, &quot;Hello Camel&quot;);
 
     // just wait a bit for the thread to stop the route
-    Thread.sleep(1500);
+    latch.await(5, TimeUnit.SECONDS);
 
     // the route should now be stopped
     assertTrue(&quot;Route myRoute should be stopped&quot;, 
context.getRouteStatus(&quot;myRoute&quot;).isStopped());
@@ -218,6 +218,9 @@ public RouteBuilder createMyRoutes() thr
                                         
exchange.getContext().stopRoute(&quot;myRoute&quot;);
                                     } catch (Exception e) {
                                         // ignore
+                                    } finally {
+                                        // signal we stopped the route
+                                        latch.countDown();
                                     }
                                 }
                             };

Modified: websites/production/camel/content/pojo-messaging-example.html
==============================================================================
--- websites/production/camel/content/pojo-messaging-example.html (original)
+++ websites/production/camel/content/pojo-messaging-example.html Sun Jul  9 
22:38:25 2017
@@ -112,7 +112,7 @@ mvn compile camel:run
 
 <p>When you start the example up you'll see a whole bunch of logs that won't 
really mean anything to you <img class="emoticon emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/smile.png";
 data-emoticon-name="smile" alt="(smile)"> The interesting stuff is happening 
in the background. Here's a diagram of whats going on.</p>
 
-<p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="pojo-messaging-example.data/pojo-messaging.jpg" 
data-image-src="/confluence/download/attachments/108577/pojo-messaging.jpg?version=1&amp;modificationDate=1233062777000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9645" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="pojo-messaging.jpg" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/jpeg" 
data-linked-resource-container-id="108577" 
data-linked-resource-container-version="25"></span></p>
+<p><span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="pojo-messaging-example.data/pojo-messaging.jpg" 
data-image-src="/confluence/download/attachments/108577/pojo-messaging.jpg?version=1&amp;modificationDate=1233062777000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9645" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="pojo-messaging.jpg" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/jpeg" 
data-linked-resource-container-id="108577" 
data-linked-resource-container-version="26"></span></p>
 
 <p>At step 1 the <code>SendFileRecordsToQueueBean</code> polls the 
<code>./src/data</code> directory for new files. There are 3 files in this 
directory so 3 messages will be created. As shown below, the <a shape="rect" 
href="pojo-consuming.html"><code>@Consume</code></a> annotation will cause any 
new messages coming from the <code>file:src/data endpoint</code> to be sent to 
the <code>onFileSendToQueue</code> method.</p>
 

Modified: websites/production/camel/content/resequencer.html
==============================================================================
--- websites/production/camel/content/resequencer.html (original)
+++ websites/production/camel/content/resequencer.html Sun Jul  9 22:38:25 2017
@@ -137,7 +137,7 @@ from(&quot;jms:queue:foo&quot;)
 </div></div>Notice this is <strong>only</strong> possible in the 
<code>batch</code> mode of the <a shape="rect" 
href="resequencer.html">Resequencer</a>.<h4 
id="Resequencer-Ignoreinvalidexchanges">Ignore invalid 
exchanges</h4><p><strong>Available as of Camel 2.9</strong></p><p>The <a 
shape="rect" href="resequencer.html">Resequencer</a> EIP will from Camel 2.9 
onwards throw a <code>CamelExchangeException</code> if the incoming <a 
shape="rect" href="exchange.html">Exchange</a> is not valid for the resequencer 
- ie. the expression cannot be evaluated, such as a missing header. You can use 
the option <code>ignoreInvalidExchanges</code> to ignore these exceptions which 
means the <a shape="rect" href="resequencer.html">Resequencer</a> will then 
skip the invalid <a shape="rect" href="exchange.html">Exchange</a>.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(&quot;direct:start&quot;)
-    .resequence(header(&quot;seqno&quot;)).batch().timeout(1000)
+    .resequence(header(&quot;seqno&quot;)).batch().timeout(250)
         // ignore invalid exchanges (they are discarded)
         .ignoreInvalidExchanges()
     .to(&quot;mock:result&quot;);

Modified: websites/production/camel/content/route-throttling-example.html
==============================================================================
--- websites/production/camel/content/route-throttling-example.html (original)
+++ websites/production/camel/content/route-throttling-example.html Sun Jul  9 
22:38:25 2017
@@ -150,7 +150,7 @@
 For example you can change the option <code>maxInflightExchanges</code> while 
its running to find a more suitable value.</p>
 
 <p>The screenshot below illustrates it from a JConsole.<br clear="none">
-<span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="route-throttling-example.data/throttling%20services.png" 
data-image-src="/confluence/download/attachments/5604305/throttling%20services.png?version=1&amp;modificationDate=1257166177000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="5865480" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="throttling services.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="5604305" 
data-linked-resource-container-version="20"></span></p>
+<span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" 
src="route-throttling-example.data/throttling%20services.png" 
data-image-src="/confluence/download/attachments/5604305/throttling%20services.png?version=1&amp;modificationDate=1257166177000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="5865480" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="throttling services.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="5604305" 
data-linked-resource-container-version="21"></span></p>
 
 <p>See more at <a shape="rect" href="camel-jmx.html">using JMX with 
Camel</a>.</p>
 

Modified: websites/production/camel/content/throttler.html
==============================================================================
--- websites/production/camel/content/throttler.html (original)
+++ websites/production/camel/content/throttler.html Sun Jul  9 22:38:25 2017
@@ -93,7 +93,7 @@
 
 <h3 id="Throttler-Examples">Examples</h3><p><strong>Using the <a shape="rect" 
href="fluent-builders.html">Fluent Builders</a></strong></p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-from(&quot;seda:a&quot;).throttle(3).timePeriodMillis(10000).to(&quot;log:result&quot;,
 &quot;mock:result&quot;);
+from(&quot;seda:a&quot;).throttle(3).timePeriodMillis(1000).to(&quot;log:result&quot;,
 &quot;mock:result&quot;);
 ]]></script>
 </div></div><p>So the above example will throttle messages all messages 
received on <strong>seda:a</strong> before being sent to 
<strong>mock:result</strong> ensuring that a maximum of 3 messages are sent in 
any 10 second window.</p><p>Note that since <code>timePeriodMillis</code> 
defaults to 1000 milliseconds, just setting the 
<code>maximumRequestsPerPeriod</code> has the effect of setting the maximum 
number of requests per second. So to throttle requests at 100 requests per 
second between two endpoints, it would look more like this...</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[from(&quot;seda:a&quot;).throttle(100).to(&quot;seda:b&quot;);
@@ -111,8 +111,8 @@ from(&quot;seda:a&quot;).throttle(3).tim
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
   &lt;from uri=&quot;seda:a&quot;/&gt;
-  &lt;!-- throttle 3 messages per 10 sec --&gt;
-  &lt;throttle timePeriodMillis=&quot;10000&quot;&gt;
+  &lt;!-- throttle 3 messages per 1 sec --&gt;
+  &lt;throttle timePeriodMillis=&quot;1000&quot;&gt;
     &lt;constant&gt;3&lt;/constant&gt;
     &lt;to uri=&quot;log:result&quot;/&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;

Modified: websites/production/camel/content/tracer-example.html
==============================================================================
--- websites/production/camel/content/tracer-example.html (original)
+++ websites/production/camel/content/tracer-example.html Sun Jul  9 22:38:25 
2017
@@ -121,7 +121,7 @@
 ]]></script>
 </div></div><p>And it should return the list of trace events in the 
SQL.</p><p>We enter this SQL:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: sql; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[select id, shortExchangeId, previousNode, 
toNode, body from camel_messagetraced]]></script>
-</div></div><p>and get the output as the picture below:</p><p><br 
clear="none"> <span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" src="tracer-example.data/tracer_sql.png" 
data-image-src="/confluence/download/attachments/107823/tracer_sql.png?version=1&amp;modificationDate=1232323775000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9605" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="tracer_sql.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="107823" 
data-linked-resource-container-version="25"></span></p><h3 
id="TracerExample-Routing">Routing</h3><p>The diagram below illustrates the 
route diagram generated using <a shape="rect" 
href="visualisation.html">Visualisation</a>.<br clear="none"> <span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src
 ="tracer-example.data/tracer_dot.png" 
data-image-src="/confluence/download/attachments/107823/tracer_dot.png?version=1&amp;modificationDate=1232326207000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9606" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="tracer_dot.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="107823" 
data-linked-resource-container-version="25"></span></p><p>We receive an 
Exchange from the in stream, then its split using the 
<strong><code>splitWords</code></strong> method. Then the quote method is 
invoked before it's aggregated and finally sent to the stream out to be printed 
in the console.</p><h3 id="TracerExample-TracetheRouting">Trace the 
Routing</h3><p>If we look at the 6 rows from the traced SQL (the first picture) 
and with the route diagram in mind we can get a better understand how the
  <a shape="rect" href="exchange.html">Exchange</a> was routed.</p><ol><li>The 
<a shape="rect" href="exchange.html">Exchange</a> does not have a previousNode 
so its the first step where its consumed from the input stream and that its 
going to the splitter.</li><li>The exchange id has changed and this is the 
output of the splitter as it creates a new Exchange. We can also see this one 
has one word in the body. This <a shape="rect" 
href="exchange.html">Exchange</a> is being routed to the quote bean 
next.</li><li>This is the 2nd output from the splitter containing the 2nd word. 
This <a shape="rect" href="exchange.html">Exchange</a> is being routed to the 
quote bean next.</li><li>This is the Beer <a shape="rect" 
href="exchange.html">Exchange</a> where we can see the output from the quote 
server and that its being routed to the aggregator.</li><li>This is the Camel 
<a shape="rect" href="exchange.html">Exchange</a> where we can see the output 
from the quote server and that its being routed
  to the aggregator.</li><li>This is the result of the aggregator where the <a 
shape="rect" href="exchange.html">Exchange</a> ending with 
id&#160;<strong><code>0-2</code></strong> "was the winner" and is being routed 
as the aggregated result to the stream out.</li></ol><h3 
id="TracerExample-ConfigurationofTracinginCamel">Configuration of <a 
shape="rect" href="jpa.html">JPA</a> Tracing in Camel</h3><p>In Camel you need 
to configure it to use JPA for tracing. We do this as by adding a tracer in the 
<strong><code>META-INF/camel-context.mxl</code></strong> file:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>and get the output as the picture below:</p><p><br 
clear="none"> <span class="confluence-embedded-file-wrapper"><img 
class="confluence-embedded-image" src="tracer-example.data/tracer_sql.png" 
data-image-src="/confluence/download/attachments/107823/tracer_sql.png?version=1&amp;modificationDate=1232323775000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9605" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="tracer_sql.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="107823" 
data-linked-resource-container-version="26"></span></p><h3 
id="TracerExample-Routing">Routing</h3><p>The diagram below illustrates the 
route diagram generated using <a shape="rect" 
href="visualisation.html">Visualisation</a>.<br clear="none"> <span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src
 ="tracer-example.data/tracer_dot.png" 
data-image-src="/confluence/download/attachments/107823/tracer_dot.png?version=1&amp;modificationDate=1232326207000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="9606" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="tracer_dot.png" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="107823" 
data-linked-resource-container-version="26"></span></p><p>We receive an 
Exchange from the in stream, then its split using the 
<strong><code>splitWords</code></strong> method. Then the quote method is 
invoked before it's aggregated and finally sent to the stream out to be printed 
in the console.</p><h3 id="TracerExample-TracetheRouting">Trace the 
Routing</h3><p>If we look at the 6 rows from the traced SQL (the first picture) 
and with the route diagram in mind we can get a better understand how the
  <a shape="rect" href="exchange.html">Exchange</a> was routed.</p><ol><li>The 
<a shape="rect" href="exchange.html">Exchange</a> does not have a previousNode 
so its the first step where its consumed from the input stream and that its 
going to the splitter.</li><li>The exchange id has changed and this is the 
output of the splitter as it creates a new Exchange. We can also see this one 
has one word in the body. This <a shape="rect" 
href="exchange.html">Exchange</a> is being routed to the quote bean 
next.</li><li>This is the 2nd output from the splitter containing the 2nd word. 
This <a shape="rect" href="exchange.html">Exchange</a> is being routed to the 
quote bean next.</li><li>This is the Beer <a shape="rect" 
href="exchange.html">Exchange</a> where we can see the output from the quote 
server and that its being routed to the aggregator.</li><li>This is the Camel 
<a shape="rect" href="exchange.html">Exchange</a> where we can see the output 
from the quote server and that its being routed
  to the aggregator.</li><li>This is the result of the aggregator where the <a 
shape="rect" href="exchange.html">Exchange</a> ending with 
id&#160;<strong><code>0-2</code></strong> "was the winner" and is being routed 
as the aggregated result to the stream out.</li></ol><h3 
id="TracerExample-ConfigurationofTracinginCamel">Configuration of <a 
shape="rect" href="jpa.html">JPA</a> Tracing in Camel</h3><p>In Camel you need 
to configure it to use JPA for tracing. We do this as by adding a tracer in the 
<strong><code>META-INF/camel-context.mxl</code></strong> file:</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;!-- use camel jpa trace so we can see all the traced exchanges in a 
database --&gt;
 &lt;bean id=&quot;camelTracer&quot; 
class=&quot;org.apache.camel.processor.interceptor.Tracer&quot;&gt;

Modified: websites/production/camel/content/tutorial-jmsremoting.html
==============================================================================
--- websites/production/camel/content/tutorial-jmsremoting.html (original)
+++ websites/production/camel/content/tutorial-jmsremoting.html Sun Jul  9 
22:38:25 2017
@@ -354,7 +354,7 @@ public static void main(final String[] a
 DefaultInstrumentationAgent    INFO  JMX connector thread started on 
service:jmx:rmi:///jndi/rmi://claus-acer:1099/jmxrmi/camel
 ...
 ]]></script>
-</div></div><p>In the screenshot below we can see the route and its 
performance metrics:<br clear="none"> <span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src="tutorial-jmsremoting.data/jconsole_jms_tutorial.PNG" 
data-image-src="/confluence/download/attachments/82923/jconsole_jms_tutorial.PNG?version=1&amp;modificationDate=1214345078000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="59672517" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="jconsole_jms_tutorial.PNG" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="82923" 
data-linked-resource-container-version="41"></span></p><h2 
id="Tutorial-JmsRemoting-SeeAlso">See Also</h2><ul><li><a shape="rect" 
class="external-link" href="http://aminsblog.wordpress.com/2008/05/06/15/"; 
rel="nofollow">Spring Remoting with JMS Example</a> on <a sh
 ape="rect" class="external-link" href="http://aminsblog.wordpress.com/"; 
rel="nofollow">Amin Abbaspour's Weblog</a></li></ul></div>
+</div></div><p>In the screenshot below we can see the route and its 
performance metrics:<br clear="none"> <span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image" 
src="tutorial-jmsremoting.data/jconsole_jms_tutorial.PNG" 
data-image-src="/confluence/download/attachments/82923/jconsole_jms_tutorial.PNG?version=1&amp;modificationDate=1214345078000&amp;api=v2"
 data-unresolved-comment-count="0" data-linked-resource-id="59672517" 
data-linked-resource-version="1" data-linked-resource-type="attachment" 
data-linked-resource-default-alias="jconsole_jms_tutorial.PNG" 
data-base-url="https://cwiki.apache.org/confluence"; 
data-linked-resource-content-type="image/png" 
data-linked-resource-container-id="82923" 
data-linked-resource-container-version="42"></span></p><h2 
id="Tutorial-JmsRemoting-SeeAlso">See Also</h2><ul><li><a shape="rect" 
class="external-link" href="http://aminsblog.wordpress.com/2008/05/06/15/"; 
rel="nofollow">Spring Remoting with JMS Example</a> on <a sh
 ape="rect" class="external-link" href="http://aminsblog.wordpress.com/"; 
rel="nofollow">Amin Abbaspour's Weblog</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">


Reply via email to