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.13. JMX Naming
Overview リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
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 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
By default, the JMX name of a
CamelContext
bean deployed in an OSGi bundle is equal to the OSGi symbolic name of the bundle. For example, if the OSGi symbolic name is MyCamelBundle
, the JMX name would be MyCamelBundle
. In cases where there is more than one CamelContext
in the bundle, the JMX name is disambiguated by adding a counter value as a suffix. For example, if there are multiple Camel contexts in the MyCamelBundle
bundle, the corresponding JMX MBeans are named as follows:
MyCamelBundle-1 MyCamelBundle-2 MyCamelBundle-3 ...
MyCamelBundle-1
MyCamelBundle-2
MyCamelBundle-3
...
Customising the JMX naming strategy リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
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 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
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 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
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 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
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 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Here are some examples of JMX name patterns you could define using the supported tokens:
Ambiguous names リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
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.