有些時候,我們的rabbitmq為了容災,會部署到不同的城市。
例如北京部署一台rabbitmq,廣州部署一台rabbitmq。
其中廣州rabbitmq有exchangea。
當北京的應用要發訊息到exchangea的時候,會因為網路原因,導致傳送時間延時。
federation提供了乙個能力,讓北京的rabbitmq接受exchanega的訊息。然後再把exchangea的訊息**到廣州的exchangea。
外掛程式會在北京(broker1)上會建立乙個同名的交換器exchangea。
同時建立乙個內部的交換器exchangea broker3
,並通過路由鍵rka
將這兩個交換器繫結起來。
與此同時 federation 外掛程式還會在 brokerl 上建立乙個佇列federation: exchangea.broker3
井與交換器exchangea.broker3
進行繫結。
federation外掛程式會在佇列federation: exchangea.broker3
與 broker3中的交換器 exchangea 之間建立一條 amqp 連線來實時地消費佇列federation: exchangea.broker3
中的資料。
這些操作都是內部的,對外部業務客戶端來說這條 federation link 建立在brokerl exchangea broker3 exchangea之間
在機器1執行命令
docker run -d --hostname rabbit1 --net=host --name myrabbit1 rabbitmq:3.6.15-management
在機器3執行命令
docker run -d --hostname rabbit3 --net=host --name myrabbit3 rabbitmq:3.6.15-management
在機器1執行命令進入容器
docker exec -it myrabbit1 /bin/bash
執行命令開啟外掛程式
rabbitmq-plugins enable rabbitmq_federation_management
在機器3執行命令進入容器
docker exec -it myrabbit3 /bin/bash
執行命令開啟外掛程式
rabbitmq-plugins enable rabbitmq_federation_management
訪問ip:15672可以見到右邊多了2攔
這裡使用命令列去新建(可以用管理後台自行新建)
在機器3執行命令
rabbitmqctl set_parameter federation-upstream f1 ''
這裡的192.168.2.138改成機器1的ip
或者在管理台用頁面新建
或者通過管理臺新建
[上傳中...(image.png-258e5f-1604834983968-0)]
這裡點選federation status
進入機器1的rabbitmq管理臺
這裡對機器1的exchange傳送一條訊息
然後在機器2的佇列裡面收到訊息。
RabbitMQ 交換機模式
在說正題之前先解釋一下交換機模式是個籠統的稱呼,它不是乙個單獨的模式 包括了訂閱模式,路由模式和主題模式 交換機模式是乙個比較常用的模式,主要是為了實現資料的同步。首先,說一下訂閱模式,就和字面上的意思差不多主要就是乙個生產者,多個消費者,同乙個訊息被多個消費者獲取,先看一下官網的圖示 整體執行過程...
rabbitmq 理論 主題交換機
儘管直連交換機能夠改善我們的系統,但是它也有它的限制 沒辦法基於多個標準執行路由操作。在我們的日誌系統中,我們不只希望訂閱基於嚴重程度的日誌,同時還希望訂閱基於傳送 的日誌。unix工具syslog就是同時基於嚴重程度 severity info warn crit.和 裝置 facility au...
RabbitMQ之Exchange交換機
rabbitmq中的exchange的作用 訊息佇列,訊息通過傳送和exchange之後最終到達的地方,到達queue的訊息及進入了等待消費的狀態。每個訊息都會被傳送到乙個或多個佇列。佇列的常用屬性name 佇列的名稱 durability 是否需要持久化,true為持久化 auto delete ...