知识卡片

Federation与Shovel的分工

专业/工作 · 593.d

内容

Federation([[Federation解决跨地域确认延迟]])和Shovel([[用Shovel做消息堆积的临时泄洪]])都能让消息跨越Broker甚至广域网转发,但抽象层次不同:Federation是”交换器对交换器”或”队列对队列”的协议级联邦,转发对上层业务几乎透明,配置更声明式;Shovel则是”队列到交换器”的更底层搬运,本质上像一个内置的、专职做消息搬运的客户端程序,控制粒度更细(可自定义确认方式、转发属性、甚至改写消息路由),但需要更明确地配置源端和目的端。发散:需要透明的跨地域联邦时选Federation,需要精细控制搬运细节(比如按阈值触发的临时迁移)时选Shovel——这是”声明式集成”与”命令式搬运”的取舍,和其他系统里选择声明式配置还是编写自定义脚本是同一类决策。

参考来源

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