RabbitMQ如何处理消息堆积情况?

方法:临时扩容,快速处理积压的消息

  • 先修复 consumer 的问题,确保其恢复消费速度,然后将现有的 consumer 都停掉;
  • 临时创建原先 N 倍数量的 queue ,然后写一个临时分发数据的消费者程序,将该程序部署上去消费队列中积压的数据,消费之后不做任何耗时处理,直接均匀轮询写入临时建立好的 N 倍数量的 queue 中;
  • 接着,临时征用 N 倍的机器来部署 consumer,每个 consumer 消费一个临时 queue 的数据
  • 等快速消费完积压数据之后,恢复原先部署架构 ,重新用原先的 consumer 机器消费消息。

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

发表评论

后才能评论