两个应用之间交互产生的数据积压问题,求解决方案

了解一个题外话题,如果A应用和B应用之间有数据交互,但是B应用服务挂了,导致数据挤压了。B服务再次起来以后,挤压的数据进行消费,但是消费的数据的速度完全跟不上A应用推送数据的速度,这就会导致挤压数据越来越多,这样应该怎样解决
注:消费者就是服务器

背景:可以看出,A是上游,B是下游。若是rabbitmq,如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概1小时的时间才能恢复过来。

方案:
这种时候只能操作临时扩容,以更快的速度去消费数据了。具体操作步骤和思路如下:
①先修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停掉。

②临时建立好原先10倍或者20倍的queue数量(新建一个topic,partition是原来的10倍)。

③然后写一个临时分发消息的consumer程序,这个程序部署上去消费积压的消息,消费之后不做耗时处理,直接均匀轮询写入临时建好分10数量的queue里面。

④紧接着征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的消息。

⑤这种做法相当于临时将queue资源和consumer资源扩大10倍,以正常速度的10倍来消费消息。

⑥等快速消费完了之后,恢复原来的部署架构,重新用原来的consumer机器来消费消息。