我在Docker容器中的Tomcat8上运行了一个简单的REST应用程序。我还有3个docker容器,它们分别在端口61616
,61617
和61618
上运行ActiveMQ 5.11.1代理,主从(以mysql为持久性)。
docker run --name myRESTApp -t -i --rm -p 8080:8080 -p 9090:9090 -v $(pwd)/webapps:/usr/local/tomcat/webapps -v $(pwd)/logs:/usr/local/tomcat/logs --link activemq1:activemq myRESTApp
在我的RESTApp activeMQConfiguration.xml
:
<property name="brokerURL" value="failover:(#{systemEnvironment['ACTIVEMQ_PORT_61616_TCP']})?randomize=false"/>
3个ActiveMQ代理在activemq.xml
:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:0" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" />
</transportConnectors>
主设备最初在61616
上运行,我停止了主设备,从设备(端口61617
)成为了新主设备。
即使在61616
上的主人停止之前,它也会抛出
Connect fail to: tcp://172.17.0.84:61616, reason: java.net.ConnectException: Connection refused
为什么在链接后,它仍然无法连接到代理?
在61616
上的主人停止后,它失败了:
Connect fail to: tcp://172.17.0.84:61616, reason: java.net.NoRouteToHostException: No route to host
不应该像所提到的那样here自动更新新主人的客户端吗?
有人可以建议将ActiveMQ集群代理连接到我的应用程序的最佳做法是什么?感谢