消息积压一般是消费者的消费速度跟不上生产消息的速度
RocketMQ的消息积压一般指某个topic的大量消息没有被消息,比如消费这个topic的消费逻辑涉及的数据库宕机了或其他原因
当前架构
解决方法
1)判断是否是消费端出现了问题 ,比如消费逻辑涉及的下游服务,IO资源等;
2)解决第一个问题后,申请若干临时的broker,做好高可用,在这个broker创建新的topic,并创建一定数量的队列,比如申请2台broker,每个broker创建10个队列,那么2台broker就是20个队列,比原来的4个队列翻了4倍,需要把原来的消费者全部下线,然后把这个topic剩余的所有消息转移到新topic中,最后创建20个消费者,每个消费者单独处理一个队列;
实现细节
1)下线消费者服务?
一般消费逻辑是耦合在服务里面,下线是否不现实,所以最好在配置中心设置一个开关;
2)数据转移?
RcoketMQ的ACK可保证数据不丢;