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