訊息佇列是在訊息的傳輸過程中儲存訊息的容器,用於接收訊息並以檔案的方式儲存,乙個佇列的訊息可以同時被多個訊息消費者消費。分布式訊息服務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要素 交換器 訊息佇列 訊息都必須宣告持久化 發布...