场景是,我设置了两个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正在使用不同的连接,所以我很困惑为什么它们相互影响。