(三)主題和佇列的區別

2021-10-08 23:08:07 字數 879 閱讀 7746

佇列:佇列是一種先進先出的線性表,它能夠嚴格保證訊息的有序性

現在的訊息佇列大概分為佇列模型和訂閱模型

佇列模型:當多個生產者在佇列生產訊息,在消費者一端,多個消費者消費訊息屬於競爭模式,同一時刻只能有乙個消費者在消費,並且消費過後則不能重新消費,如果每個消費者都要得到乙份全量的資料就必須建立多個佇列,乙份訊息複製到多個佇列,給每個消費者乙個佇列,這樣我們就必須知道消費者有多少個,違背的訊息佇列的解耦原則。

訂閱-發布者模式:發布者-主題-訂閱者,每個訂閱者都能夠得到一根全量的資料。

佇列模式和發布者模式的最大區別在於:發布者模式的每個消費者能夠有一分全量的訊息,一分資料能夠重複消費。當訂閱者只有乙個時,則佇列和發布模式沒有區別。

rabbitmq訊息模式:採用的是佇列模式,通過exchange交換機來解決給每個消費者乙份全量的資料,生產者不用關心傳送到那個佇列,將訊息傳送給交換機,交換機會通過各自策略傳送多個佇列中,

rocketmq訊息模型: 採用訂閱發布者模式。

對於現在大部分的消費機制來說,都採用「消費=確認」的方式來保證系統的可靠性,當消費者處理完相應的業務邏輯,會給佇列傳送乙個消費確認,如果設定時間內沒有得到確認,則會重新傳送進行消費。由於這種機制,在同乙個時刻至多有乙個消費者在消費,否則會出現訊息空洞,訊息的消費順序會與生產的傳送順序不一致,所以rocketmq引入了佇列,乙個主題中有多個佇列,這樣能保證多個消費組並行消費,可以水平擴容消費組內消費者來提高消費效率。訊息在佇列中可以實現順序性,在主題層面不能夠實現嚴格的消費順序,rocketmq訂閱者為消費組,消費組之間沒有關係,一條訊息被乙個a消費組消費,同時還能被b消費組消費,通過維護乙個消費位置來區分,消費組內對於每條訊息的消費是競爭關係,一條訊息只能被乙個消費者去消費。

kafka:與rocket 模型類似,在kafka中佇列叫做分割槽

訊息的主題和佇列

一 佇列模型 我們常用的的生產者 消費者模式,生成者生成訊息,消費者消費已有的訊息。訊息佇列一開始也是使用這種模式稱之為佇列模型,生產者將訊息投遞到訊息佇列中,消費者從訊息佇列中取出訊息,而訊息就是已佇列的結構存放在訊息佇列中。但這種模型有個缺點,當這個訊息需要被多個消費者消費的時候,需要生產者傳送...

訊息模型 主題和佇列有什麼區別?

可以看到,技術圈的風向一直在變,大資料 雲的熱度已經在慢慢消退,現在當紅的是 ai 和 iot。這些火熱的概念,它最終要從 和 ppt 落地,變成真正能解決問題的系統,否則就是乙個空中樓閣。那不變的是什麼?一些題外話的感觸 最初的訊息佇列,就是乙個嚴格意義上的佇列 如果需要將乙份訊息資料分發給多個消...

分割槽 Service Bus 佇列和主題

編輯人員注釋 本文章由 windows azure service bus 團隊的二級專案經理 ruppert koch 撰寫。上週,microsoft 發布了 azure sdk 2.2 和 service bus sdk 2.2。這兩種 sdk 都具有新的 service bus 功能,即分割槽...