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

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

阅读 6.2k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题