JMS实现MessageListener接口后,如何实现手动停止监听

wmlz
  • 26

目前的项目里使用springboot+jms实现了javax.jms.MessageListener接口来监听消息队列,没有启用mq事务。
当应用升级时需要kill掉应用,希望能够先主动停止监听消息队列,然后暂停30s,把已接收的消息给处理完之后再结束进程。但是没有找到jms如何能主动停止监听。我想的是在springboot里注册一个钩子方法,在kill进程的时候调用钩子方法来停止监听

回复
阅读 3.5k
1 个回答
✓ 已被采纳

Spring 是通过 DefaultMessageListenerContainer 来管理JMS消费者生命周期的,DefaultMessageListenerContainer.stop() 方法可以停掉消费者。你可以将 DefaultMessageListenerContainer Autowired 进来然后手动调用 stop 方法。

宣传栏