如何处理消息队列大量消息积压

60 篇文章 1 订阅
什么情况下会造成大量消息积压?

可能消费者突然挂了我们没有发现,可能消费者处理消费能力出现问题,与生产者产生消息速度不匹配。

消息积压会带来什么样的问题?

我们要分析大量消息挤压可能带来的问题:

  • 比如消息存留时间过长,导致失效消失;
  • 比如消息队列集群磁盘被写满;
  • 再比如挤压了几个小时,哪怕是消费者恢复了消费速度还是要很久才能慢慢消费完,效率如此低下怎么办?
如何解决?

1、积压消息太多,恢复速度后消费速度慢,效率低下,那我们就要增加消费速度了。这时候可以申请资源新建一个topic增加partition分区,比如原来是3个,那我们就增加到30个,并且建立30个消费者去同时消费,那速度自然就增加了10倍。原来的3个就需要将原本的数据也写入新的topic中。等到积压消息处理完了,再改回原本的消费者中。

2、如果用了rabbitMQ,并且设置了超时时间,消息积压的时候就有可能会出现超时丢失的情况。一般情况下生产环境是不会设置超时时间的,但是万一设置了出现这种情况,我们首先是要排除问题保证后续消息处理正常,不会再造成丢失。然后等过了数据高峰期再写个临时程序,将丢失的数据一点点查询出来,重新写入topic中。

3、如果长时间没有消费导致磁盘满了怎么办,如果不能临时扩容,那么只有两种方案,要么将消息扔掉等过了高峰期走上面的第二种方案,去补偿数据;要么新建立一个消费者,将消息快速消费存入一个新的地方。

其实这种情况说白了,并没有一种高深的技术性方案,就是靠临时方案去解决,只能我们尽量避免这种情况出现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木小同

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值