前言:

Federation具备的数据转发功能类似,Shovel能够可靠、持续地从一个Broker中的队列(作为源端,即source)拉取数据并转发至另一个Broker中的交换器(作为目的端,即destination)。作为源端的队列和作为目的端的交换器可以同时位于同一个Broker,也可以位于不同的Broker 上。Shovel可以翻译为"铲子",是一种比较形象的比喻,这个"铲子"可以将消息从一方"铲子"另一方。Shovel行为就像优秀的客户端应用程序能够负责连接源和目的地、负责消息的读写及负责连接失败问题的处理。

1、 Shovel工作原理图;

分别往Q1和Q2各自发送一条消息,Q1的消息也会通过Shovel发送给Q2,所以Q1收到1条消息,Q2收到2条消息

 

2、 搭建shovel;

(1)分别在3个RabbitMQ节点上安装shovel插件

rabbitmq-plugins enable rabbitmq_shovel

效果图:

node1:

 

node2:

 

node3:

 

(2)分别在3个RabbitMQ节点上安装shovel管理插件

rabbitmq-plugins enable rabbitmq_shovel_managemen

效果图:

node1:

 

node2:

 

node3:

 

(3)进入Admin页面,可以发现多出了2个与shovel有关的菜单

 

(4)新增shovel

 

(5)填写shovel的相关信息

 

(6)新增shovel 

效果图: 

(7)点击Shovel Status菜单查看Shovel的运行状态,若状态显示running,则证明Shovel正在正常运行,若这时候往Q1队列发送消息,消息会自动同步到Q2