Я пытаюсь запустить сеть брокера с двумя брокерами в одной сети, но на двух разных виртуальных машинах.
Из-за некоторых внутренних ограничений мне приходится использовать собственный порт jmx. Я использую оболочку Tanuki для запуска ActiveMQ на сервере Ubuntu.
Вот соответствующая часть моего 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 .service = TRUE -Dwrapper.cpu.timeout = 10 -Dwrapper.jvmid = 1 org.tanukisoftware.wrapper.WrapperSimpleApp org.apache.activemq.console.Main start
Порт открыт на ходу.
Сеть брокера работает, но я не могу подключиться к jmx с помощью jvisualvm с server_dns: 4321. Он возвращает ошибку «не удается подключиться к server_dns: 4321 с помощью службы: jmx: rmi: /// jndi / rmi: // server_dns: 4321 / jmxrmi.
Я вижу некоторый трафик на порту через tcpdump.
Может ли кто-нибудь сказать мне, что я делаю не так или как мне использовать ActiveMQ в качестве сети брокера с настраиваемым портом jmx?