知识卡片

用Shovel做消息堆积的临时泄洪

专业/工作 · 593.e

内容

当一个队列消息堆积严重到可能引发内存/磁盘告警时,除了清空丢弃或临时扩容消费者,还可以用Shovel(角色分工见[[Federation与Shovel的分工]])在堆积超过阈值时自动把消息批量转发到备份集群的对应队列里暂存,等原队列堆积回落到安全水位后,再用另一条Shovel把暂存的消息挪回来。发散:这本质是把”存储空间不够用”的问题转化成”临时借用另一处存储”来解决,而不是靠丢数据硬扛过载——用可逆的空间迁移换取时间,是应对突发流量的一种通用思路,代价是需要维护双向搬运的阈值触发策略以避免震荡。

参考来源

《RabbitMQ实战指南》第8章《跨越集群的界限》