首先要找到原因,是producer太多了,还是说consumer太少了。定位问题,然后看下消息的消费速度是否正常,正常的话,可以通过临时上线更多consumer解决问题。
如果consumer和queue不对等,上线了多台consumer也无法解决的话,可以
- 准备一个临时的topic;
- queue的数量是堆积的N倍;
- queue分布到多台broker中
- 上线一台consumer做消息搬运工,把原来topic中的信息搬到新topic中,不做业务处理,只搬运
- 上线N台consumer同时消费topic中的数据
tip1:堆积时间过长消息会超时吗?
rocketMQ中的消息只有在commitLog被删除的时候才会消失,不会超时。也就是说没被消费的消息不存在会被超时删除这种情况。
tip2:堆积的消息会不会进入死信队列?
不会的,消息再被消费失败后会进入重试队列。