Spring JMS 根据请求开始监听 jms 队列
Spring JMS start listening to jms queues on request
Spring 提供 @JMSListener
注释以侦听来自特定队列的消息。还有一个 implement JmsListenerConfigurer
的替代方法,注册一个 MessageListener
.
在这两种情况下,队列的名称必须在应用程序启动时已知,可以通过在代码中进行硬编码或通过属性。
有没有办法在应用程序启动后很久才知道其名称的队列?
这应该有效。
- 使用虚拟队列名称和
id
配置 @JmsListener
。
- 将 listener container factory 配置为
autoStartup
false。
- 准备就绪后,使用
JmsListenerEndpointRegistry
中的 id
获取对侦听器容器的引用(将注册表自动连接到您的应用程序并调用 getListenerContainer(id)
)。
- 将容器投射到
AbstractMessageListenerContainer
并使用所需的队列调用 setDestinationName
(或 setDestination
)。
start()
吧。
Spring 提供 @JMSListener
注释以侦听来自特定队列的消息。还有一个 implement JmsListenerConfigurer
的替代方法,注册一个 MessageListener
.
在这两种情况下,队列的名称必须在应用程序启动时已知,可以通过在代码中进行硬编码或通过属性。
有没有办法在应用程序启动后很久才知道其名称的队列?
这应该有效。
- 使用虚拟队列名称和
id
配置@JmsListener
。 - 将 listener container factory 配置为
autoStartup
false。 - 准备就绪后,使用
JmsListenerEndpointRegistry
中的id
获取对侦听器容器的引用(将注册表自动连接到您的应用程序并调用getListenerContainer(id)
)。 - 将容器投射到
AbstractMessageListenerContainer
并使用所需的队列调用setDestinationName
(或setDestination
)。 start()
吧。