【问题标题】:ActiveMQ on Windows not enabling JMXWindows 上的 ActiveMQ 未启用 JMX
【发布时间】:2021-05-07 19:15:55
【问题描述】:

我在 Windows 上使用 ActiveMQ 5.16.1。我在activemq.xml<broker> 部分设置了useJmx="true"。但是,在启动 ActiveMQ 之后,默认的 JMX 端口 1099 上没有任何内容进行监听,并且 JConsole 不会将 ActiveMQ 显示为目标。

我尝试在 activemq.xml 中显式启用 JMX 连接器:

<managementContext>
    <managementContext createConnector="true"/>
</managementContext>

但是,我在 ActiveMQ 启动控制台中遇到此故障:

WARN | Failed to start JMX connector Port already in use: 1099; nested exception is:
            java.net.BindException: Address already in use: JVM_Bind. Will restart management to re-create JMX connector, trying to remedy this issue.

这会返回一个空结果

netstat -an | grep 1099

【问题讨论】:

    标签: activemq jmx


    【解决方案1】:

    JMX 很可能已经通过启动脚本运行——因此出现错误消息。我打赌 netstat -na 是在 ActiveMQ 进程给你错误并且进程已经退出之后运行的。

    这是一个令人困惑的地方——使用 Apache ActiveMQ 构建时 managementContext 中的设置应该是 createConnector="false"。

    背景:ActiveMQ 本质上是一个库,因此它具有支持以各种不同方式运行的功能。当您从 Apache 构建下载启动 ActiveMQ 时,JMX 设置通常使用 bin/setenv 脚本中的 -D 参数启动。 managementContext 设置用于指示 ActiveMQ 嵌入到不同的运行时/构建中,该运行时/构建启动 JMX 本身。

    【讨论】:

    • 我从默认的 createConnector="false" 开始,并且似乎没有启用 JMX。将其设置为 createConnector="true" 是一种强制启用的尝试,但也会因“端口已被使用”的新问题而失败,这令人费解,因为端口上没有发布任何内容。我放弃并使用了 jolokia REST API。
    • 也许启用了防火墙? Jolokia 是 JMX 管理服务的代理。如果 Jolokia 工作正常,则说明 JMX 信息已正确注册。
    • Windows 防火墙已关闭。 ActiveMQ 没有出现在 jconsole 上,并且默认端口上没有任何监听。没关系,我对 REST 解决方案很满意,
    • 明确地说,Jolokia 是“类似 REST 的”,但不是严格意义上的 REST。有关详细信息,请参阅Jolokia documentation
    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2013-02-14
    • 1970-01-01
    • 2016-02-22
    • 2015-10-21
    相关资源
    最近更新 更多