具有自定义jmx端口的ActiveMQ 5.8代理网络

时间:2013-10-16 14:23:32

标签: activemq ubuntu-12.04 jmx

我正在尝试在同一网络上运行两个代理网络,但是在两个不同的虚拟机上运行。

由于一些内部限制,我必须使用自定义jmx端口。 我正在使用Tanuki包装器在Ubuntu服务器上启动ActiveMQ。

这是我的activemq.xml的相关部分

<broker xmlns="http://activemq.apache.org/schema/core" advisorySupport="false" useJmx="true" brokerName="test1" dataDirectory=".../data/activemq">
    <networkConnectors>
        <networkConnector uri="multicast://1.2.3.4:101234?group=test" 
            dynamicOnly="true"
            networkTTL="3"
            prefetchSize="1"
            decreaseNetworkConsumerPriority="true" 
            userName="user"
            password="password"/>
    </networkConnectors>

    <transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"  rebalanceClusterClients="true" updateClusterClients="true" />
        <transportConnector name="nio" uri="nio://0.0.0.0:61617"  rebalanceClusterClients="true" updateClusterClients="true" discoveryUri="multicast://1.2.3.4:101234?group=test"  />
    </transportConnectors>
    ...
    <managementContext>
        <managementContext createConnector="false"/>
    </managementContext>
    ...
</broker>

这是wrapper.conf的相关部分:

# Uncomment to enable jmx
wrapper.java.additional.1=-Dcom.sun.management.jmxremote
wrapper.java.additional.2=-Dcom.sun.management.jmxremote.port=4321
wrapper.java.additional.3=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.4=-Dcom.sun.management.jmxremote.ssl=false

在两个代理上运行ActiveMQ时,我会看到具有预期选项的进程:

  

activemq 30682 30680 3 13:27? 00:00:30 java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 4321 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -Djavax.net.ssl.keyStore = .. / .. / conf / broker.ks -Djavax.net.ssl.trustStore = .. / .. / conf / broker.ts -Dcom.sun.management.jmxremote -Dorg .apache.activemq.UseDedicatedTaskRunner = true -Djava.util.logging.config.file = logging.properties -Dactivemq.conf = .. / .. / conf -Dactivemq.data = .. / .. / data -Xms2048m -Xmx2048m -Djava.library.path = .. / .. / bin / linux-x86-64 / -classpath ../../bin/wrapper.jar:../../bin/activemq.jar -Dwrapper.key = y4TuwO32Hj6kN7w8 -Dwrapper.port = 32000 -Dwrapper.jvm.port.min = 31000 -Dwrapper.jvm.port.max = 31999 -Dwrapper.pid = 30680 -Dwrapper.version = 3.2.3 -Dwrapper.native_library = wrapper -Dwrapper .service = TRUE -Dwrapper.cpu.timeout = 10 -Dwrapper.jvmid = 1 org.tanukisoftware.wrapper.WrapperSimpleApp org.apache.activemq.console.Main start

港口在正在运行的海岸线上打开。

代理网络已启动但我无法使用jvisualvm与server_dns:4321连接到jmx。它返回错误 “无法连接到server_dns:4321使用服务:jmx:rmi:/// jndi / rmi:// server_dns:4321 / jmxrmi

我可以通过tcpdump在端口上看到一些流量。

有人可以告诉我我做错了什么,或者我应该如何使用ActiveMQ作为自定义jmx端口的Broker网络?

1 个答案:

答案 0 :(得分:1)

JMX需要2个开放端口。 rmi需要额外的一个。 我想通了这篇文章:Apache ActiveMQ browser can't connect to JMX console

在我的情况下,修复是更改我的包装器的配置以暴露rmi端口并打开防火墙上的端口

# Uncomment to enable jmx
wrapper.java.additional.1=-Dcom.sun.management.jmxremote
wrapper.java.additional.2=-Dcom.sun.management.jmxremote.port=4321
wrapper.java.additional.3=-Dcom.sun.management.jmxremote.port=8765
wrapper.java.additional.4=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.ssl=false