搜索

2.16. JMX 命名

download PDF

概述

Apache Camel 允许您通过定义 管理名称模式 来自定义 JMX 中显示的 CamelContext bean 的名称。例如,您可以自定义 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 failing

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

#bundleId#

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

#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.