用于队列的ActiveMQ多个MessageListener似乎无法正常工作

时间:2013-12-13 03:10:00

标签: java jms activemq spring-jms

场景是,我设置了两个DefaultMessageListenerContainer,如下所示:

DefaultMessageListenerContainer container = createListenerContainer(queueName, groupName, listener);
container.setDestination(getDestination(queueName, prefetchSize));
container.setConcurrentConsumers(consumers);
container.setMaxConcurrentConsumers(consumers);
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_CONNECTION);
container.setConnectionFactory(connectionFactory);
container.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
container.setMessageListener(listener);
container.setMessageSelector(selector);
container.initialize();
container.start();

虽然选择器不同,但有一个是“groupName<>'A'”,有15个消费者,另一个是“groupName ='A'”,有2个消费者。

在我的情况下,每条消息大约需要6分钟或更长时间才能完全消耗。

我之前只设置了一个没有选择器的MessageListener,它可以正常工作。

但现在我可以观察到无处不在的阻塞,具有groupName<>的消息即使队列中有很多消息,偶尔也不会消耗'A'。

我可以看到这些MessageListenerContainers正在使用不同的连接,所以我很困惑为什么它们相互影响。

0 个答案:

没有答案