我们有两个activemq实例配置为一个集群和一个四个glassfish实例的集群,在任何给定时间都应该连接到一个activemq。如果activemq01不可用,则所有四个glassfish实例都应在activemq02上进行故障转移。activeMQ多个消费者问题
我注意到了几次,出于不明原因,其中一个(随机)glassfish实例将在activemq02上进行故障转移,其余三个实例仍将连接到activemq01,即使activemq01未关闭,并且所有glassfish实例应该一直在收听activemq01。
日志没有指出任何可以解释这种行为的东西,只有那一个glassfish实例无法连接到activemq01和activemq02上的故障转移才能看到。
有没有人遇到过相同或类似的问题?任何帮助/意见,不胜感激。
这里是我的ActiveMQ CONFIGS:
activemq01:
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-豆类,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
谢谢Anubhava!这个配置的问题是,当我停止activemq01时,activemq02上的连接失败,但是当我尝试启动activemq01并停止activemq02时,消费者没有故障恢复到activemq01。 – Nerses 2011-04-15 16:59:06
我的待处理队列一直在堆叠,我花了很多时间研究和调整设置,并不确定发生了什么。这只发生在一个队列中。只是为了给你一些内部的信息,以防你可以建议通过一些配置改变来提高性能: – Nerses 2011-04-15 17:01:29
生产者将消息对象放入队列中,队列中有几十个单独的联系人,然后消费者(4)监听队列,并选择消息(对象),解析并提交给移除供应商,当时是一个联系人。据了解,供应商交付的性能很慢,您认为如果我增加该队列的预取大小(当前是100),它会纠正问题,并且消息不会堆栈在待处理队列中?预先感谢您 – Nerses 2011-04-15 17:04:50