我正在尝试在同一网络上运行两个代理网络,但是在两个不同的虚拟机上运行。
由于一些内部限制,我必须使用自定义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网络?
答案 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