我有一个DefaultMessageListenerContainer设置,其配置如下:
threadServiceListenerContainer(org.springframework.jms.listener.DefaultMessageListenerContainer) {
maxConcurrentConsumers = 10
concurrentConsumers = 1
destinationName = 'releaseThread'
pubSubDomain = false
connectionFactory = ref("connectionFactory")
messageListener = ref('threadServiceMessageListener')
}
经纪人中有3000条积压消息。消费率似乎是2 /秒。我已将JProfiler附加到Java节点,但似乎10个侦听器线程/消费者在最坏情况下处于空闲状态,或者最多只能在1个时间运行。
消费者处理时间未向JProfiler注册。消费者只是为memcached添加一个值,而memcached正在健康运行。
似乎我的消费者只是......坐在那里......
有什么想法?我重启了经纪人,没有性能差异。我重新启动了节点,没有性能差异。
我正在将Map注入经纪人。
这是我的connectionfactory bean:
connectionFactory(org.springframework.jms.connection.CachingConnectionFactory, ref("amqConnectionFactory")) {
exceptionListener = {com.zipwhip.jms.JmsExceptionListener jmsExceptionListener -> }
sessionCacheSize = 100
}
amqConnectionFactory(org.apache.activemq.ActiveMQConnectionFactory) {
brokerURL = 'tcp://localhost:61616'
}
答案 0 :(得分:0)
我建议尝试几件事:将生产者流量控制设置为false并更改调度策略。尝试更改其中一个或两个以查看是否有帮助。我们在ActiveMQ(运行嵌入OpenEJB)中遇到了性能问题,但最终让一切运行顺利。
要使用activemq.xml更改这些,请使用以下命令:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" producerFlowControl="false" enableAudit="false" >
<dispatchPolicy>
<roundRobinDispatchPolicy />
</dispatchPolicy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
此外,我们从ActiveMQ 4.x升级到5.3.1,我们从JDBC / journaled persistence切换到KahaDB持久性。