RocketMQ4.9.x版本中,defaultMQPushConsumer.shutdown()后再start(),消费组没连上收不到消息,有遇到过这样问题的吗?
RocketMQ4.9.x版本中,消费组没连上收不到消息,有遇到过这样问题的吗?[阿里云消息队列MQ]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
RocketMQ4.9.x版本中,defaultMQPushConsumer.shutdown()后再start(),消费组没连上收不到消息,有遇到过这样问题的吗?
是的,我曾经遇到过类似的问题。这可能是由于 RocketMQ 4.9.x 版本中的 bug 导致的。
在 RocketMQ 4.9.x 版本中,默认情况下,如果调用
shutdown()
方法关闭了消费组,则无法再次调用start()
方法重新连接并接收消息。这是因为shutdown()
方法会断开与 RocketMQ 服务器的所有连接,并释放所有的资源,包括队列和主题等。因此,在关闭消费组之后,即使再次调用start()
方法也无法恢复到以前的状态。为了解决这个问题,建议在每次关闭消费组之前,先使用
suspend()
方法暂停消费,然后再使用resume()
方法恢复消费。这样可以在不完全关闭消费组的情况下停止接收消息,并在需要的时候重新开始消费。此外,还有一种解决方案是在关闭消费组之后,重新创建一个新的消费组对象来代替原来的消费组。但是这种方法需要重新订阅所有的话题,并且在生产环境中可能不太适合,因为会增加额外的操作复杂性和系统负载。
有可能的原因如下:
在 RocketMQ 中,默认情况下,当
DefaultMQPushConsumer
对象调用shutdown()
方法时,它会取消所有待处理的消息,从而使消费者退出消息队列。如果您希望再次启动消费者,请重新创建
DefaultMQPushConsumer
对象,并使用start()
方法初始化新的连接。您可以使用新的对象重新订阅主题,并重新注册监听器,如: