我有一个如下配置的DefaultMessageListenerContainer:
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConcurrentConsumers(4);
container.setConnectionFactory(connectionFactory);
container.setDestinationName(String.format("Consumer.%s.VirtualTopic.%s", group, topic));
container.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
container.setSessionTransacted(true);
container.setMessageListener(new DelegatingMessageListener(listener, messageMapper, event));
container.start();
消息容器没有接收到消息,我的消息监听器也没有被调用。只需将DefaultMessageListenerContainer切换为SimpleMessageListenerContainer,其他保持不变,它就可以工作-但是SimpleMessageListenerContainer在连接丢失后无法恢复。
日志中没有错误,并且几乎没有相关的消息。有人知道这种情况发生的原因吗?
SimpleMessageListenerContainer
有一个重写的doStart
方法,实际上创建了监听器。我没有在DefaultMessageListenerContainer
中看到相应的代码,这很有趣。也许我漏掉了什么。 - Colin MafterPropertiesSet()
。 - Gary Russell