消息队列精进之路

消息队列相关问题一网打尽
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

如何处理消息队列的消息积压问题?

发布于 2024-03-13 | 更新于 2024-05-01

一般的出现消息积压的原因:

  • 生产这生产消息速度太快,导致消费者消费不过来;
  • 消费者出现了bug,导致消费速度显著降低了。

遇到消息积压,我们需要先排查下,判断是不是有bug,有bug就赶紧修,具体流程:

  • 修复问题:修复消费者的问题,确保消费者可以恢复消费速度;
  • 消息队列临时扩容:
    • 新建一个Topic,分区为原来的10倍,建好是原来10倍的队列数量,暂时停掉现有消费者服务器;
    • 写一个临时的分发消费者:用于消费消息堆积的Topic消息,消费后不做处理,只是单纯的把消息均匀地转发到上面建好的Topic中;
    • 修复后的consumer消费新的Topic,临时部署多几台服务器,如原来的10倍数量,每批消费者节点消费一个临时的queue数据;
    • 最后,堆积消息处理完之后,恢复原先的部署架构,重启修复后的消费者改回继续消费原来的Topic。

如果消息积压不是bug引起的,可以这么做:

  • 检查消费逻辑,查看是否有优化空间,比如如果原来是一条一条处理的,可否优化为批处理;
  • 对消息队列进行扩容,增加Topic的队列数以及消费组内的机器数量,从而提升消费能力。

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/faqs/mq/how-to-handle-message-backlog-issues.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。