大量消息在MQ里积压几个小时还没解决 -> 消费者不消费了
① 先修复consumer,确保其恢复消费速度,然后将现有consumer停掉;
② 新建一个topic,partition是原来的十倍,临时建立好原先queue20倍的数量;
③ 临时写一个分发数据的consumer程序,消费积压的数据,不做耗时处理,直接均匀轮询写入临时建好的20倍数量的queue;
④ 临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据;
⑤ 相当于正常速度10倍的速度来消费数据;
⑥ 等快速消费完积压的数据之后,恢复原先的部署架构;rabbitMQ设置了过期时间
生产环境不设置过期时间,很坑;
解决方案:批量重导,手动写程序将丢失数据查出来,手动发送到mq,重新消费。长时间积压数据未处理,mq快满了
方案:临时写一个消费者,消费到消息不要做耗时处理,将消息写到其他mq中,或者直接丢弃,避免mq满了,然后再写程序,手动批量重导。
