目前的项目里使用springboot+jms实现了javax.jms.MessageListener接口来监听消息队列,没有启用mq事务。
当应用升级时需要kill掉应用,希望能够先主动停止监听消息队列,然后暂停30s,把已接收的消息给处理完之后再结束进程。但是没有找到jms如何能主动停止监听。我想的是在springboot里注册一个钩子方法,在kill进程的时候调用钩子方法来停止监听
目前的项目里使用springboot+jms实现了javax.jms.MessageListener接口来监听消息队列,没有启用mq事务。
当应用升级时需要kill掉应用,希望能够先主动停止监听消息队列,然后暂停30s,把已接收的消息给处理完之后再结束进程。但是没有找到jms如何能主动停止监听。我想的是在springboot里注册一个钩子方法,在kill进程的时候调用钩子方法来停止监听
8 回答6.6k 阅读
4 回答715 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答798 阅读✓ 已解决
Spring 是通过
DefaultMessageListenerContainer
来管理JMS消费者生命周期的,DefaultMessageListenerContainer.stop()
方法可以停掉消费者。你可以将DefaultMessageListenerContainer
Autowired 进来然后手动调用 stop 方法。