rabbitMQ級聯消費方案驗證

2021-10-10 23:22:19 字數 1308 閱讀 4529

federation外掛程式的設計目標是使rbbitmq 在不同的 broker 節點之間進行訊息傳遞而無須建立集群,該功能在很多場景下都非常有用:

(1)頁面方式:

(2)命令列方式:

rabbitmqctl set_parameter federation-upstream my-upstream \

''(3)http方式:

put /api/parameters/federation-upstream/%2f/my-upstream

}(1)頁面新增

(2)命令列新增:

(3)http介面呼叫新增:

put /api/policies/%2f/federate-me

, \(1)頁面新增:

(2)命令列新增:

建立虛擬主機: rabbitmqctl add_vhost cloudmsghost

以下demo為1個上游節點和兩個下游節點

(1)下游單節點rabbitmq

指令碼中呼叫介面不停地新增上游節點,在不匹配queue或者exchange的情況下,可以新增1w+上游節點。在匹配5個queue的情況下,新增到3910個上游節點時mq容器就崩潰了。重啟容器後,很多介面不響應,無法正常工作。

當上游數量在1500個左右時,效能還好,可以正常工作。

(2)下游為兩節點映象模式集群

當不停地增加上游節點,數量達到1500個左右時,rabbitmq管理節點出現一段時間的報錯,訊息收發出現延遲。一兩個小時後,恢復正常。之後再增加上游節點時,系統響應緩慢,很難再加上去了。

密碼中有「@」字元,會導致新增上游節點失敗。

RabbitMQ 如何保證消費不被重複消費?

為什麼會出現訊息重複?訊息重複的原因有兩個 1.生產時訊息重複,2.消費時訊息重複。由於生產者傳送訊息給mq,在mq確認的時候出現了網路波動,生產者沒有收到確認,實際上mq已經接收到了訊息。這時候生產者就會重新傳送一遍這條訊息。生產者中如果訊息未被確認,或確認失敗,我們可以使用定時任務 redis ...

rabbitMQ如何避免重複消費

由於生產者傳送訊息給mq,在mq確認的時候出現了網路波動,生產者沒有收到確認,實際上mq已經接收到了訊息。這時候生產者就會重新傳送一遍這條訊息。生產者中如果訊息未被確認,或確認失敗,我們可以使用定時任務 redis db 來進行訊息重試 消費者消費成功後,再給mq確認的時候出現了網路波動,mq沒有接...

RabbitMQ 消費端的限流策略

假設乙個場景,由於我們的消費端突然全部不可用了,導致 rabbitmq 伺服器上有上萬條未處理的訊息,這時候如果沒做任何現在,隨便開啟乙個消費端客戶端,就會導致巨量的訊息瞬間全部推送過來,但是我們單個客戶端無法同時處理這麼多的資料,就會導致消費端變得巨卡,有可能直接崩潰不可用了。所以在實際生產中,限...