MQ消息队列过期失效问题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

可能消费端出了问题不消费了或者消费的速度极其慢,堆积大量消息未消费过期了。可能消息队列集群的磁盘都快写满了,都没人消费。消费端每次消费之后要写mysql,结果mysql 挂了不能消费了或者是消费端出问题,导致消费速度极其慢。

大量消息在mq里积压了几个小时了还没解决

几千万条数据在MQ里积压了七八个小时,这个时候要不然就是修复consumer的问题,让它恢复消费速度,然后等待几个小时消费完毕。一个消费者一秒是1000条,一秒3个消费者是 3000条,一分钟就是18万条。如果积压了几百万到上千万的数据,即使消费者恢复了,也需要大概1小时的时间才能恢复过来。

一般这个时候,只能临时紧急扩容了,具体操作步骤和思路:先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉。新建一个topic,partition是原来的10 倍,临时建立好原先10倍的queue数量。然后写一个临时的分发数据的 consumer 程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue。接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据。这种做法相当于是临时将 queue 资源和 consumer资源扩大10倍,以正常的10倍速度来消费数据。等快速消费完积压数据之后,得恢复原先部署的架构,重新用原先的consumer 机器来消费消息。

mq中的消息过期失效了

RabbtiMQ可以设置过期时间,也就是TTL。如果消息在queue中积压超过一定的时间就会被 RabbitMQ给清理掉,然后数据就没了。这就不是说数据会大量积压在mq里,而

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6