RabbitMq常見問題

2021-09-25 14:25:18 字數 2469 閱讀 2681

什麼是rabbitmq?

為什麼要使用rabbitmq?

訊息佇列的優缺點?

rabbitmq 的使用場景有哪些?

rabbitmq 有哪些重要的角色?

rabbitmq 有哪些重要的元件?

rabbitmq 中 vhost 的作用是什麼?

rabbitmq 的訊息是怎麼傳送的?

rabbitmq 怎麼保證訊息的穩定性?

rabbitmq 怎麼避免訊息丟失?

要保證訊息持久化成功的條件有哪些?

rabbitmq 持久化有什麼缺點?

rabbitmq 有幾種廣播型別?

rabbitmq 怎麼實現延遲訊息佇列?

rabbitmq 集群有什麼用?

rabbitmq 節點的型別有哪些?

rabbitmq 集群搭建需要注意哪些問題?

rabbitmq 每個節點是其他節點的完整拷貝嗎?為什麼?

rabbitmq 集群中唯一乙個磁碟節點崩潰了會發生什麼情況?

rabbitmq 對集群節點停止順序有要求嗎?

kafka 與 rabbitmq 的區別?

rabbitmq 即乙個訊息佇列,主要是用來實現應用程式的非同步和解耦,同時也能起到訊息緩衝,訊息分發的作用。rabbitmq使用的是amqp協議,它是一種二進位制協議。

amqp,即advanced message queuing protocol,乙個提供統一訊息服務的應用層標準高階訊息佇列協議,是應用層協議的乙個開放標準,為面向訊息的中介軟體設計。基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同的開發語言等條件的限制。erlang中的實現有 rabbitmq等。

要結合具體應用場景去分析,知道不同訊息佇列的區別。

具體文章見:kafka、activemq、rabbitmq、rocketmq 有什麼優缺點:

具體文章見:kafka、activemq、rabbitmq、rocketmq 有什麼優缺點:

rabbitmq 中重要的角色有:生產者,消費者和**

vhost:每個rabbitmq都能建立多個vhost,我們稱之為虛擬主機,每個虛擬主機其實都是mini版的rabbitmq,它擁有自己的佇列,交換器和繫結,擁有自己的許可權機制。

首先客戶端必須連線到rabbitmq伺服器才能發布和消費訊息,客戶端和 rabbit server 之間會建立乙個tcp連線,一旦tcp開啟並通過了認證(認證就是你傳送給rabbit伺服器的使用者名稱和密碼),你的客戶端和 rabbitmq 就建立一條 amqp 通道(channel),通道是建立在「真實」tcp上的虛擬連線,amqp命令都是通過通道傳送出去的,每個通道都會有唯一的id,不論是發布訊息,訂閱佇列都是通過這個通道完成的。

持久化的缺點就是降低了伺服器的吞吐量,因為使用的是磁碟而非記憶體儲存,從而降低了吞吐量。可盡量使用ssd硬碟來緩解吞吐量的問題。

延遲佇列的實現有兩種方式:

集群主要有以下兩個用途:

不是,原因有以下兩個:

效能的考慮:如果每條訊息都需要完整拷貝每乙個集群節點,那新增節點並沒有提公升處理訊息的能力,最多是保持和單節點相同的效能甚至更糟。

如果唯一磁碟的磁碟節點崩潰,不能進行一下操作:

唯一磁碟節點崩潰了,集群是可以保持執行的,但你不能更改任何東西。

rabbitmq 對集群的停止的順序是有要求的,應該先關閉記憶體節點,最後關閉磁碟節點。如果順序恰好相反的話,可能造成訊息的丟失。

應用場景方面

rabbitmq:用於實時的,對可靠性要求較高的訊息傳遞上。

kafka:用於處於活躍的流式資料,大資料量的資料處理上。

架構模型方面

producer,broker,consumer

rabbitmq:以broker為中心,有訊息的確認機制

kafka:以consumer為中心,無訊息的確認機制

吞吐量方面

rabbitmq:支援訊息的可靠的傳遞,支援事務,不支援批量操作,基於儲存的可靠性的要求儲存可以採用記憶體或硬碟,吞吐量小。

kafka:內部採用訊息的批量處理,資料的儲存和獲取是本地磁碟順序批量操作,訊息處理的效率高,吞吐量高。

集群負載均衡方面

rabbitmq:本身不支援負載均衡,需要loadbalancer的支援

kafka:採用zookeeper對集群中的broker,consumer進行管理,可以註冊topic到zookeeper上,通過zookeeper的協調機制,producer儲存對應的topic的broker資訊,可以隨機或者輪詢傳送到broker上,producer可以基於語義指定分片,訊息傳送到broker的某個分片上。

kafka通過zk和分割槽機制實現:zk記錄broker資訊,生產者可以獲取到並通過策略完成負載均衡;通過分割槽,投遞訊息到不同分割槽,消費者通過服務組完成均衡消費。

訊息中介軟體選型分析——從kafka與rabbitmq的對比來看全域性:

RabbitMQ常見問題以及解決措施

rabbitmq訊息丟失 這個是rabbitmq最常見的問題,rabbitmq丟失分三種情況,生產者訊息丟失,rabbitmq訊息丟失,消費者訊息丟失.生產者訊息丟失 生產者在傳送訊息給rabbitmq,在中途有可能因為網路問題導致訊息丟失,我們可以選擇rabbitmq提供的事務,也可以用confi...

最全RabbitMQ教程4 常見問題

二 如何保證訊息冪等?三 如何保證訊息的順序?這是面試時最喜歡問的問題,其實這個是所有mq的乙個共性的問題,大致的解決思路也是差不多的,但是針對不同的mq產品會有不同的解決方案。之前針對rocketmq做過分析,我們再按照rabbitmq來分析下這個問題。我們考慮乙個通用的mq場景 其中,1,2,4...

RabbitMQ 實踐經驗與常見問題

生產者傳送訊息到broker的可靠性 服務端確認機制 交換機的可靠性 路由保證 佇列的可靠性 消費端的可靠性 消費者確認機制 為什麼訊息會重複?消費端 響應 假如生產者未收到 重發 重發間隔 重發次數 如何冪等處理訊息 業務訊息必須有唯一的業務id,訊息id。即msgid bizid。資料庫中的唯一...