我们有两个activemq实例配置为一个集群,一个集群包含四个glassfish实例,应该在任何给定时间连接到ONE activemq . 如果activemq01不可用,则所有四个glassfish实例都应在activemq02上进行故障转移 .
我已经多次注意到,由于未知原因,其中一个(随机)glassfish实例将在activemq02上进行故障转移,其余三个实例仍将连接到activemq01,即使activemq01未关闭,并且所有glassfish实例应该一直在监听在activemq01上 .
日志没有指出可以解释这种行为的任何内容,我只能看到一个glassfish实例无法连接到activemq01上的activemq01和failedover .
有没有人遇到过相同或类似的问题?非常感谢任何帮助/建议 .
这是我的activemq配置:
activemq01:
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq -core.xsd“>
文件:$ {} activemq.base /conf/credentials.properties
<managementContext>
<managementContext connectorPort="1093" createConnector="true"/>
</managementContext>
<networkConnectors>
<networkConnector name="amq-prod" uri="static://(tcp://127.0.0.1:61616,tcp://192.168.0.167:61616)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
<plugins>
<loggingBrokerPlugin logAll="false" logConnectionEvents="true"/>
</plugins>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="2048 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="2 gb" name="prod"/>
</storeUsage>
<tempUsage>
<tempUsage limit="2000 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" updateClusterClients="true" />
</transportConnectors>
#
activeMQ02:
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq -core.xsd“>
文件:$ {} activemq.base /conf/credentials.properties
<managementContext>
<managementContext connectorPort="1093" createConnector="true"/>
</managementContext>
<networkConnectors>
<networkConnector name="amq-prod" uri="static://(tcp://127.0.0.1:61616,tcp://192.168.0.166:61616)" />
</networkConnectors>
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="2048 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="2 gb" name="prod"/>
</storeUsage>
<tempUsage>
<tempUsage limit="2000 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" updateClusterClients="true" />
</transportConnectors>
activeMQ的版本 - 5.4.1
1 回答
让您的networkConnector标记定义如下:
acticemq01 config:
acticemq02 config:
在您的消费者中使用 JMS provider URL 如下:
在failover以上URL将始终连接到acticemq01代理(如果可用) . 如果acticemq01发生故障,它将自动故障转移到acticemq02代理 . 此外,timeout = 5000将确保消费者在5秒内抛出错误,试图连接到2个代理中的任何一个 .