Spring JMS根据请求开始侦听jms队列

时间:2016-11-24 16:55:51

标签: java spring jms spring-jms

Spring提供@JMSListener注释来侦听来自特定队列的消息。还有implement JmsListenerConfigurer的替代方案,并注册MessageListener

在这两种情况下,必须在应用程序启动时通过代码中的硬编码或通过属性来知道队列的名称。

有没有办法在应用程序启动后很长时间内侦听名称为应用程序所知的队列?

1 个答案:

答案 0 :(得分:1)

这应该有用。

  1. 使用虚拟队列名称和@JmsListener配置id
  2. listener container factory配置为autoStartup false。
  3. 准备就绪后,使用id中的JmsListenerEndpointRegistry来获取对侦听器容器的引用(自动将注册表连接到您的应用中并致电getListenerContainer(id))。
  4. 将容器投放到AbstractMessageListenerContainer并使用所需的队列调用setDestinationName(或setDestination)。
  5. start()它。