RocketMQ消息状态异常问题排查
MQ一般问题发现的流程是发现消息收不到,然后到控制台去查询消息状态。结果发现可能是XXXX。这里就明确一下消息投递的异常状态,和造成这种异常状态的常见的原因。本文的MQ指的是RocketMQ。
消息状态
- NOT_ONLINE- 订阅端不在线(未启动) 
- CONSUMED- 已消费(正常状态) 
- CONSUMED_BUT_FILTERED- 消息已经被投递且被过滤。(一个消费组能同时订阅多个 tag,但一个消费组的不同消费者不能分开订阅不同的tag,即同一个消费组的订阅关系必须保持一样。) 
- NOT_CONSUME_YET- 暂未消费(尝试多次消费失败) 
- UNKNOWN- 未知状态(原因比较多) 
问题场景
- 走定时任务时同时走 - MQ导致消息消费失败,查询消息状态为- NOT_CONSUME_YET。- 原因:跑定时任务的时候机器涉及大量数据库操作占有大量的核心内存资源,导致同时跑 - MQ的时候机器资源不够用了,导致消息消费多次失败。
- 修改 - MQ配置后,再接收消息在控制台发现消息状态为- NOT_ONLINE- 原因:要么是订阅端没有启动要么就是订阅端对 - MQ没有心跳,建议查端口,然后启动一下。
- 待补充…