前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有几百万的消息持续积压几小时,怎么解决?

有几百万的消息持续积压几小时,怎么解决?

作者头像
名字是乱打的
发布2022-05-13 09:37:57
5320
发布2022-05-13 09:37:57
举报
文章被收录于专栏:软件工程

消费端出问题之后,消息队列可能出现的问题

- 消息队列满了以后该怎么处理? - 如何解决消息队列的延时以及过期失效问题? - 有几百万消息持续积压几小时,说说怎么解决?

一 有几百万消息持续积压几小时,怎么解决?

方法一 :如果是常规方法修复消费者继续消费,一个消费者一秒是1000条,3个消费者是3000条,一分钟是18万条,如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概1小时的时间才能恢复过来.效率极低

方法二 : 扩容消费端的实例数,具体操作步骤和思路如下: 1)先修复consumer的问题,确保其恢复消费速度,然后将现有cnosumer都停掉 2)新建一个topic,partition是原来的10倍,临时建立好原先10倍或者20倍的queue数量 3)然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue 4)接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据 5)这种做法相当于是临时将queue资源和consumer资源扩大10倍,以正常的10倍速度来消费数据 6)等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费消息 如果有必要,短时间内没有足够的服务器资源进行扩容,没办法的办法是,将系统降级,通过关闭一些不重要的业务,减少发送方发送的数据量,最低限度让系统还能正常运转,服务一些重要业务。

二 如何解决消息队列的延时以及过期失效问题?

如果我们用的是rabbitmq,rabbitmq是可以设置过期时间的,就是TTL 如果消息在queue中积压超过一定的时间就会被rabbitmq给清理掉,这个数据就没了,可能导致大量的数据丢失。 一般不建议设置过期时间自动失效

如果消息真的没处理就 失效没了 解决方法 : 写程序重导丢失的那批数据,写个临时程序,一点一点的查出来,然后重新灌入mq里面去,把白天丢的数据补回来。

三 消息队列满了以后该怎么处理?

同积压消息处理思路,将消息进行快速处理和清空.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 消费端出问题之后,消息队列可能出现的问题
    • 一 有几百万消息持续积压几小时,怎么解决?
    • 二 如何解决消息队列的延时以及过期失效问题?
    • 三 消息队列满了以后该怎么处理?
    相关产品与服务
    消息队列 CMQ 版
    消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档