2.16. JMX 命名


概述

Apache Camel 允许您通过为其定义 管理名称模式 来自定义 CamelContext bean 的名称,因为它出现在 JMX 中。例如,您可以自定义 XML CamelContext 实例的名称模式,如下所示:

<camelContext id="myCamel" managementNamePattern="#name#">
    ...
</camelContext>

如果您没有为 CamelContext bean 明确设置名称模式,则 Apache Camel 会恢复到默认的命名策略。

默认命名策略

默认情况下,在 OSGi 捆绑包中部署的 CamelContext bean 的 JMX 名称等于捆绑包的 OSGi 符号名称。例如,如果 OSGi 符号名称是 MyCamelBundle,JMX 名称为 MyCamelBundle。如果捆绑包中有多个 CamelContext,通过添加计数器值作为后缀来忽略 JMX 名称。例如,如果 MyCamelBundle 捆绑包中存在多个 Camel 上下文,则对应的 JMX MBeans 被命名,如下所示:

MyCamelBundle-1
MyCamelBundle-2
MyCamelBundle-3
...

自定义 JMX 命名策略

默认命名策略的一个缺陷是,您不能保证给定 CamelContext bean 在运行之间具有相同的 JMX 名称。如果要在运行之间具有更大的一致性,您可以通过为 CamelContext 实例定义 JMX 名称 模式来更精确地控制 JMX 名称

在 Java 中指定名称模式

要在 Java 中对 CamelContext 指定名称模式,请调用 setNamePattern 方法,如下所示:

// Java
context.getManagementNameStrategy().setNamePattern("#name#");

在 XML 中指定名称模式

要在 XML 中的 CamelContext 中指定名称模式,请在 camelContext 元素上设置 managementNamePattern 属性,如下所示:

<camelContext id="myCamel" managementNamePattern="#name#">

名称模式令牌

您可以通过在以下任何令牌混合使用字面文本来构造 JMX 名称模式:

表 2.11. JMX 名称模式令牌
令牌描述

#camelId#

CamelContext bean 上的 id 属性的值。

#name#

#camelId# 相同。

#counter#

递增计数器(从 1开始)。

#bundleId#

部署的捆绑包的 OSGi 捆绑包 ID (仅限OSGi)。

#symbolicName#

OSGi 符号名称 (仅限OSGi)。

#version#

OSGi 捆绑包版本 (仅限OSGi)。

例子

以下是您可以使用支持的令牌定义的 JMX 名称模式的一些示例:

<camelContext id="fooContext" managementNamePattern="FooApplication-#name#">
    ...
</camelContext>
<camelContext id="myCamel" managementNamePattern="#bundleID#-#symbolicName#-#name#">
    ...
</camelContext>

模糊的名称

由于自定义命名模式覆盖默认命名策略,因此可以使用此方法定义模糊的 JMX MBean 名称。例如:

<camelContext id="foo" managementNamePattern="SameOldSameOld"> ... </camelContext>
...
<camelContext id="bar" managementNamePattern="SameOldSameOld"> ... </camelContext>

在这种情况下,Apache Camel 会在启动时失败,并报告 MBean 已存在 异常。因此,您应该额外注意确保您没有定义模糊的名称模式。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.