首页 > 代码库 > rabbitmq shovel插件

rabbitmq shovel插件

官网说明https://www.rabbitmq.com/shovel.html#management-status

启用shovel插件命令:

rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management

技术分享

 

查看已经安装的插件

rabbitmq-plugins list

 

技术分享

shovel 插件的使用存在 static 和 dynamic 两种形式,其主要差异如下

Static Shovels Dynamic Shovels
基于 broker 的配置文件进行定义 基于 broker 的 parameter 参数进行定义
需要重启宿主 broker 以便配置生效 可以在任意时间进行创建和删除,直接生效
更加通用:任何 queue 、exchange 或 binding 关系均可在启动时手动声明 更具有目标性:被 shovel 所使用的 queue 、exchange 和 binding 关系能够自动被声明(创建)

1.为什么需要使用 shovel 插件?
答:当业务需要可靠且连续地将消息从一个 broker 的 queue 里搬运(转发)到另一个 broker 的 exchange 时(最终达到某个 queue 里 )使用;作为 source 的 queue 和作为 destination 的 exchange 可以位于同一个 broker 上(通常要求处于不同的 vhost 下),也可以位于不同的 broker 上。

2.使用 shovel 插件的好处?
答:shovel 基于 RabbitMQ 的 Erlang 客户端实现,且作为 built-in 插件被使用,故可以随 broker 的启动而自动启动;shovel 具有松耦合特性:通过该插件可以在分属不同管理域下的 broker 或 cluster 之间进行消息的搬运;shovel 具有 WAN 友好特性:基于 AMQP 0-9-1 协议实现,并设计成能够保证在不稳定网络场景下不丢失消息;shovel 具有高度可定制性:允许在 shovel 建立连接后,立即执行指定的 AMQP 方法进行定制化操作(例如声明 queue 的动作);

rabbitmq shovel插件