5

我正在使用 ActiveMQ 5.3.2 和 5.6.0。在 ActiveMQ 5.3.2 中,JMX 的默认设置是

SUNJMX="-Dcom.sun.management.jmxremote"

在 ActiveMQ 5.6.0 中,JMX 的默认设置是

ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"

因此,这些设置没有端口定义。你能告诉我 ActiveMQ 真的用这些设置启动 JMX 连接吗?如果是这样,默认连接的端口是什么,因为我无法连接到 1099。如果端口是随机选择的,如何找到 ActiveMQ 正在使用的端口?

谢谢。

4

3 回答 3

10

默认端口是 1099。这可以通过在 activeMQ 启动脚本(activemq.bat 或 .sh 文件)中将 jmx 参数作为参数传递给 activeMQ 来覆盖。使用属性

Dcom.sun.management.jmxremote.port用于设置 JMX 端口

于 2012-12-04T14:14:48.590 回答
1

如果您在 Spring Boot 中运行 ActiveMQ Broker,这是将 JMX 端口配置为值 11099 的简单方法:

    BrokerService broker = new BrokerService();

    broker.getManagementContext().setConnectorPort(11099);
    broker.getSystemUsage().getStoreUsage().setLimit(100_000_000L);
    broker.getSystemUsage().getTempUsage().setLimit(100_000_000L);

    TransportConnector connector = new TransportConnector();
    connector.setUri(new URI("tcp://localhost:61616?wireFormat.maxInactivityDuration=3000000&wireFormat.maxInactivityDurationInitalDelay=1000000"));

    broker.addConnector(connector);
    broker.start();
于 2020-02-25T17:07:51.543 回答
0

默认情况下,它似乎没有绑定到“默认 activemq jmx 端口”,但是您可以修改 activemq 文件(或添加环境变量)。如果您不指定端口,JMX 不会通过明确声明 one来打开一个。

例如取消注释此行(或旧版本的 activemq 文件中的等效项)

 # ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.port=11099 "

因此,我想您可以将其视为“取消注释其配置行的默认设置”。

此外,当您发出“停止”命令并且它没有通过(默认是我运行的 activemq 版本中的端口 11099)时,即使默认配置未在未修改配置的情况下侦听该端口,--jmxurl它也会默认尝试联系service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi第一的。诡异的。

于 2021-01-07T18:00:46.077 回答