如何解决消息队列堆积几百万消息怎么办?
这个造成的原因就是消费端出现了问题,不消费了或者消费速度变慢了。
消息堆积几小时在队列
- 先修复consumer的问题,确保其恢复消费速度,然后将现在的comsumer停掉
- 新建一个topic,partition是原来的10倍,临时建好原先10倍的queue数量
- 然后写一个临时的分发数据的consumer程序,这个程序部署消费积压的消息,消费之后不做耗时处理,直接均匀轮询写入临时建立好的10倍的queue中
- 接着临时征用10倍机器来部署consumer,每一个comsumer消费一个queue中的数据。这种做法相当于将queue资源和comsumer资源扩大10倍,相当于以正常速度的10倍消费数据
- 等快速消费完积压的数据之后,得恢复原来的部署架构,使用原来的comsumer来消费数据