Spring提供了@JMSListener
注解来监听来自特定队列的消息。还有一个替代方案 implement JmsListenerConfigurer
并注册一个MessageListener
。
在这两种情况下,在应用程序启动时都必须知道队列的名称,可以通过代码中的硬编码或通过属性来实现。
有没有办法监听一个队列,其名称在应用程序启动后很晚才知道?
最佳答案
这应该有效。
- 使用虚拟队列名称和
id
配置@JmsListener
。 - 配置listener container factory
autoStartup
false。 - 准备好后,使用
JmsListenerEndpointRegistry
中的id
获取对监听器容器的引用(自动将注册表连接到您的应用并调用getListenerContainer( id)
)。 - 将容器转换为
AbstractMessageListenerContainer
并使用所需队列调用setDestinationName
(或setDestination
)。 start()
它。
关于java - Spring JMS开始根据请求监听jms队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40791567/