官網說明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 的動作);