Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.2.11. JMX Naming
Overview Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
Apache Camel allows you to customise the name of a
CamelContext
bean as it appears in JMX, by defining a management name pattern for it. For example, you can customise the name pattern of an XML CamelContext
instance, as follows:
<camelContext id="myCamel" managementNamePattern="#name#"> ... </camelContext>
<camelContext id="myCamel" managementNamePattern="#name#">
...
</camelContext>
If you do not explicitly set a name pattern for the
CamelContext
bean, Apache Camel reverts to a default naming strategy.
Default naming strategy Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
By default, the JMX name of a
CamelContext
bean is equal to the value of the bean's id
attribute, prefixed by the current bundle ID. For example, if the id
attribute on a camelContext
element is myCamel
and the current bundle ID is 250, the JMX name would be 250-myCamel
. In cases where there is more than one CamelContext
instance with the same id
in the bundle, the JMX name is disambiguated by adding a counter value as a suffix. For example, if there are multiple instances of myCamel
in the bundle, the corresponding JMX MBeans are named as follows:
250-myCamel-1 250-myCamel-2 250-myCamel-3 ...
250-myCamel-1
250-myCamel-2
250-myCamel-3
...
Customising the JMX naming strategy Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
One drawback of the default naming strategy is that you cannot guarantee that a given
CamelContext
bean will have the same JMX name between runs. If you want to have greater consistency between runs, you can control the JMX name more precisely by defining a JMX name pattern for the CamelContext
instances.
Specifying a name pattern in Java Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
To specify a name pattern on a
CamelContext
in Java, call the setNamePattern
method, as follows:
// Java context.getManagementNameStrategy().setNamePattern("#name#");
// Java
context.getManagementNameStrategy().setNamePattern("#name#");
Specifying a name pattern in XML Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
To specify a name pattern on a
CamelContext
in XML, set the managementNamePattern
attribute on the camelContext
element, as follows:
<camelContext id="myCamel" managementNamePattern="#name#">
<camelContext id="myCamel" managementNamePattern="#name#">
Name pattern tokens Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
You can construct a JMX name pattern by mixing literal text with any of the following tokens:
Token | Description |
---|---|
#camelId# | Value of the id attribute on the CamelContext bean. |
#name# | Same as #camelId# . |
#counter# | An incrementing counter (starting at 1 ). |
#bundleId# | The OSGi bundle ID of the deployed bundle (OSGi only). |
#symbolicName# | The OSGi symbolic name (OSGi only). |
#version# | The OSGi bundle version (OSGi only). |
Examples Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
Here are some examples of JMX name patterns you could define using the supported tokens:
Ambiguous names Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
Because the customised naming pattern overrides the default naming strategy, it is possible to define ambiguous JMX MBean names using this approach. For example:
<camelContext id="foo" managementNamePattern="SameOldSameOld"> ... </camelContext> ... <camelContext id="bar" managementNamePattern="SameOldSameOld"> ... </camelContext>
<camelContext id="foo" managementNamePattern="SameOldSameOld"> ... </camelContext>
...
<camelContext id="bar" managementNamePattern="SameOldSameOld"> ... </camelContext>
In this case, Apache Camel would fail on start-up and report an MBean already exists exception. You should, therefore, take extra care to ensure that you do not define ambiguous name patterns.