【问题标题】:What is the default port for JMX in ActiveMQ?ActiveMQ 中 JMX 的默认端口是什么?
【发布时间】:2012-11-08 06:52:22
【问题描述】:

我正在使用 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正在使用的端口?

谢谢。

【问题讨论】:

标签: java activemq jmx


【解决方案1】:

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

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

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

所以我猜你可以认为这是“如果你取消注释它的配置行的默认值”。

此外,当您发出“停止”命令并且它没有传递 --jmxurl(在我运行的 activemq 版本中默认是端口 11099)时,它确实默认尝试联系 service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi,即使默认配置是在不先修改配置的情况下不监听该端口。很奇怪。

【讨论】:

    【解决方案2】:

    如果您在 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();
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 即使启动命令有 -Dcom.sun.management.jmxremote 参数,我想你必须确保代理配置有标志 useJmx= “真”。我说的对吗?
      猜你喜欢
      • 1970-01-01
      • 2012-05-07
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 2017-04-28
      • 2020-12-21
      相关资源
      最近更新 更多