1. 程式人生 > 其它 >RabbitMQ的相關概念及五種佇列模式

RabbitMQ的相關概念及五種佇列模式

一、RabbitMQ介紹

訊息佇列產品有很多,比如說常見的有RocketMQ、RabbitMQ、ActiveMQ和Kafka。其中Kafka的效能是最好的,併發量比較大,而且訊息收發的速度也非常快。但是訊息收發的可靠性上,Kafka不如RabbitMQ,而且技術選型的時候執行速度並不是唯一標準。比速度的話,組合語言碾壓一切高階語言,但是現在我們寫程式幾乎不會選用匯編語言,而是要兼顧開發效率、易用性和生態圈。RabbitMQ還有另外一個殺手鐗,那就是既支援訊息非同步收發,又支援同步收發,這個太牛了。雖然我們現在大部分的場景對應的是訊息非同步收發,但是有的場合要支援訊息的同步收發,這時候RabbitMQ能適應各種業務場景的優點就顯現出來了。所以在專案立項的時候,選擇RabbitMQ是最穩妥的方案。

二、RabbitMQ的五種佇列模式

(一)、簡單模式

一個生產者(傳送方)對應一個消費者。(接收方)

(二)、Work模式

一個生產者對應多個消費者,但是隻能有一個消費者獲得訊息。(排他)

(三)、釋出/訂閱模式

一個消費者將訊息首先發送到fanout交換器,交換器繫結到多個佇列,然後與之對應的所有消費者都能接收到訊息。(不排他)

(四)、路由模式

生產者將訊息傳送到direct交換器,交換器按照關鍵字(Key),把訊息路由到某個佇列。

(五)、主題模式

生產者將訊息傳送到Topic交換器,交換器按照複雜的規則,把訊息路由到某個佇列

三、訊息持久化

訊息的可靠性是RabbitMQ的一大特色,那麼RabbitMQ是如何保證訊息可靠性的呢?答案就是訊息持久化。持久化可以防止在異常情況下丟失資料。除了訊息持久化之外,甚至交換器和佇列都能持久化。

四、ACK應答

預設情況下,訊息是無限期儲存在RabbitMQ上面的,但是我們可以設定訊息過期時間,到期之後無論該訊息是否已經被接收,都會被RabbitMQ刪除。