訊息佇列屬性及常見訊息佇列介紹

2021-12-30 10:25:23 字數 1320 閱讀 9092

訊息佇列是在訊息的傳輸過程中儲存訊息的容器,用於接收訊息並以檔案的方式儲存,乙個佇列的訊息可以同時被多個訊息消費者消費。分布式訊息服務dms則是分布式的佇列系統,訊息佇列中的訊息分布儲存,且每條訊息儲存多個副本,以實現高可用性,如下圖所示。

一般來說,訊息佇列具有如下屬性:

訊息順序

普通佇列支援「分割槽有序」和「全域性佇列」兩種模式,activemq佇列和kafka佇列均為分割槽有序。

分割槽有序的佇列通過分布式處理,支援更高的併發,但由於佇列的分布式特性,dms無法保證能夠以接收訊息的精確順序進行消費。如果使用者要求保持順序,建議在每條訊息中放置排序資訊,以便在收到訊息時對訊息重新排序。

全域性有序的佇列對訊息消費遵循先入先出規則(fifo),適用於對消費順序要求較高的場景。

至少一次傳遞

在極少數情況下,當使用者接收或刪除訊息時,儲存訊息副本的伺服器之一可能不可用。如果出現這種情況,則該不可用伺服器上的訊息副本將不會被刪除,並且在接收訊息時可能會再次獲得該訊息副本。

這被稱為「至少一次傳遞」,因此,使用者的應用程式應該設計為冪等的應用程式(即,如果應用程式多次處理同一條訊息,則不得受到不利影響)。

訊息較少時單次消費不能獲取指定數量的訊息

從訊息佇列中消費訊息時,dms每次從部分訊息儲存分割槽中讀取訊息返回訊息給消費者,如果佇列中的訊息數比較少,則單次消費可能會少於指定條數,但多次消費最終可獲取全部訊息。

普通佇列

包括分割槽有序和全域性有序,分割槽有序的普通佇列具有更高的併發效能,不保證先入先出(fifo)的嚴格順序,全域性有序的普通佇列保證訊息先入先出(fifo)的嚴格順序。dms支援普通佇列和有序佇列,提供高併發、低延時、穩定安全的訊息中介軟體服務。

activemq佇列

使用amqp協議的佇列。advanced message queuing protocol,是統一訊息服務的應用層標準的高階訊息佇列協議,是應用層協議的乙個開放標準,為面向訊息的中介軟體設計。dms相容activemq,簡單易用,按需使用,支援水平擴充套件,安全可靠,無憂運維。

kafka佇列

支援使用開源kafka客戶端進行生產訊息和消費訊息。支援高吞吐和高可靠兩種模式,高吞吐模式的訊息副本非同步落盤,具有較高的效能,高可靠模式的訊息多副本同步落盤,保證訊息的可靠性。dms相容kafka,即開即用,安全可靠,支援高吞吐、高可靠兩種應用場景。

rabbitmq佇列

採用物理隔離方式部署,支援使用者自定義記憶體規格和自定義特性,您可以根據業務需要定製相應計算能力和儲存空間的rabbitmq例項。dms相容rabbitmq,提供獨佔資源,保證佇列高效能。

訊息佇列介紹

1.簡介 一 rabbitmq 訊息佇列介紹 rabbitmq也是訊息佇列,那rabbitmq和之前python的queue有什麼區別麼?如果是兩個完全獨立的python程式,也是不能用上面兩個queue進行互動的,或者和其他語言互動有哪些實現方式呢。disk socket 其他中介軟體 這裡中介軟...

訊息佇列介紹

訊息佇列 message queue,簡稱mq 指儲存訊息的乙個容器,本質是個佇列。訊息 message 是指在應用之間傳送的資料,訊息可以非常簡單,比如只包含文字字串,也可以更複雜,可能包含嵌入物件。訊息佇列 message queue 是一種應用間的通訊方式,訊息傳送後可以立即返回,有訊息系統來...

訊息佇列 訊息佇列

輪詢排程 一次性分發所有訊息,保證訊息平均分配,不管消費者是否能正常消費 訊息應答 保證消費端能確實消費,不丟失 公平 乙個乙個分發所有訊息,在保證分發到的執行緒確認回覆後,才分發下個訊息給下個空閒的消費者,訊息持久化 保證佇列中的訊息不丟失,包括3要素 交換器 訊息佇列 訊息都必須宣告持久化 發布...