DefaultMessageListenerContainer未接收消息

Col*_*n M 5 spring activemq-classic jms spring-jms

我有一个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();
Run Code Online (Sandbox Code Playgroud)

消息容器永远不会收到消息,我的消息监听器永远不会被调用.保持其他所有相同,如果我只是将DefaultMessageListenerContainer切换到SimpleMessageListenerContainer,它可以工作 - 但是连接丢失后SimpleMessageListenerContainer不会恢复

日志中没有错误,几乎没有任何相关消息.有没有人有理由说明为什么会这样?

Gar*_*ell 17

当构建在Java容器(Spring应用程序上下文之外),你需要调用afterPropertiesSet()之前start().

上下文自动为Spring bean执行此操作.

  • 谢谢!这工作得很好。现在觉得自己很傻。我只是通过上下文注册了所有内容,但是我在每个服务所依赖的共享库中都有此代码,并且这些服务订阅了 Spring JMS 层之上的抽象(因此他们对 JMS 的存在一无所知- 他们只是从某个地方发送事件并对其做出反应)。 (2认同)