訊息的主題和佇列

2022-03-07 10:20:44 字數 812 閱讀 9337

一、佇列模型

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

二、發布-訂閱模型

發布者發布訊息到主題中,消費者需要提前訂閱該主題,就可以接收到傳送到這個主題上的訊息了。發布者就是之前佇列模型的生產者,主題就是佇列,訂閱者就是之前的消費者。

這樣子一條訊息需要被多個訂閱者消費到就都訂閱這個主題就可以了,不需要複製到多個佇列上浪費資源。

現在又有乙個新問題,主題中的訊息為了保證有序性,同一時刻只能有乙個訂閱者消費,序列效率很低,如何解決這個問題呢?

三、不同mq使用的模型

rocketmq使用的是發布-訂閱模型。為了解決上述問題,引入了佇列,將主題中的訊息分散到不同佇列中,這樣就可以並行的消費了。

kafka和rocketmq差不多,只是佇列換了乙個名稱為分割槽,也是使用的發布-訂閱模型。

而rabbitmq使用的是佇列模型,但為了解決多個消費者的問題,引入了exchange的概念。同乙個訊息需要被多個消費者消費,則在exchange中配置多個路由,路由到不同佇列上。

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

佇列是一種資料結構,有完整而嚴格的定義。佇列 先進先出 注 多個生產者傳送資訊為所有訊息合集,順序為生產者傳送訊息的自然順序。多個消費者時,任何一條訊息只能被乙個消費者收到 多個消費者需要共享乙個訊息,演化出 發布 訂閱模型 注 佇列和發布 訂閱模型最大區別就是乙份訊息資料能不能被消費多次的問題 依...

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

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

IPC主題一之訊息佇列

訊息佇列是訊息傳輸過程中儲存訊息的容器,就是乙個訊息的鍊錶。可以把訊息看作乙個記錄,具有特定的格式以及特定的優先順序。對訊息佇列有寫許可權的程序可以向訊息佇列中按照一定的規則新增新訊息 對訊息佇列有讀許可權的程序則可以從訊息佇列中讀走訊息。1 訊息佇列應用於程序間的通訊 2 訊息佇列是面向資料塊的,...