当消费者服务启动后,rmq日志会打印warn日志提示快照队列已经被删除,:
org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService$ConsumeRequest#run方法里:
log.warn("processQueue is dropped without process consume result. messageQueue={}, msgs={}", messageQueue, msgs);
排查原因可能是由于:
org.apache.rocketmq.client.impl.consumer.RebalanceImpl#updateProcessQueueTableInRebalance方法中ProcessQueue被设置为setDropped(true),请问下什么情况下会出现启动的时候会设置为setDropped(true)导致内存的快照ProcessQueue 和 实际的 MessageQueue 不一致,?
processQueueTable,当前消息队列缓存表,如果缓存表中的 MessageQueue 不包含在 mqSet 中,说明经过本次负载后,该 mq 被分配给其他消费者,故需要暂停该消息队列消息的消费,方法 是将 ProccessQueue 的状态设置为 draped=true
processQueueTable,当前消息队列缓存表,如果缓存表中的 MessageQueue 不包含在 mqSet 中,说明经过本次负载后,该 mq 被分配给其他消费者,故需要暂停该消息队列消息的消费,方法 是将 ProccessQueue 的状态设置为 draped=true
thanks
该作用如同@happer所述,另外,issue 只用于bug报告以及新特性提出,希望可以在邮件列表里面讨论问题呀(https://rocketmq.apache.org/about/contact/),很多小伙伴会及时回复的。
Most helpful comment
processQueueTable,当前消息队列缓存表,如果缓存表中的 MessageQueue 不包含在 mqSet 中,说明经过本次负载后,该 mq 被分配给其他消费者,故需要暂停该消息队列消息的消费,方法 是将 ProccessQueue 的状态设置为 draped=true