rabbitmq的聯邦交換機federation

2022-10-09 00:54:17 字數 2674 閱讀 8666

有些時候,我們的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 ...