1、最近生产的mq出现了一个问题:我的消费者是集群(就是双节点),现在消息积压到1亿多条,如下图所示
其中有两个问题:问题1,就是为什么我的消息积压这么多?问题2:我的消费者是集群,为什么只有一台消息在消费
2、接着开始排查问题,结果发现在消费端的逻辑代码里面有异常,因为我们在mq里面配置了消息重试机制,及重试机制的间隔时间,所以消息一直卡在那。但是问题来了,我们对异常代码进行捕获,在catch里面也有对mq进行返回,如下图所示
@Override
public OrderAction consume(final Message message, final ConsumeOrderContext context) {
log.info("MQ消息消费者监听消息内容:{}", message);
MqMessageRecordMo mqMessageRecordMo = new MqMessageRecordMo();
try {
String body = new String(message.getBody());
String tag = message.getTag();
mqMessageRecordMo.setMsgId(message.getMsgID());
mqMessageRecordMo.setOrderTopic(message.getTopic