RabbitMQ 二 模式型別

2022-04-09 23:58:52 字數 2466 閱讀 3559

rabbitmq系列rabbitmq(一)——簡介rabbitmq(二)——模式型別rabbitmq(三)——簡單模式

rabbitmq(四)——工作佇列模式

rabbitmq(五)——發布訂閱模式

rabbitmq(六)——路由模式

rabbitmq(七)——主題模式

rabbitmq(八)——訊息確認

rabbitmq(九)——訊息持久化

rabbitmq(十)——訊息優先順序

上章 rabbitmq(一)——簡介 我們學習了rabbitmq的一些簡單知識,本章記錄rabbitmq各種模式的型別以及各自特點。

簡單模式:乙個生產者,乙個消費者。

工作佇列模式:乙個生產者,多個消費者,每個消費者獲取到的訊息唯一,預設輪詢獲取。

發布/訂閱模式(fanout):乙個生產者傳送的訊息會被多個消費者獲取。傳送到fanout exchange的訊息都會被**到與該exchange繫結(binding)的所有的queue上。這種模式不需要任何routekey,需要提前將exchange 與queue進行繫結,乙個exchange可以繫結多個queue,乙個queue可以和多個exchange繫結。如果接收到訊息的exchange沒有與任何queue繫結,則訊息會丟失。

路由模式(direct):任何傳送到direct exchange的訊息都會被**到routekey指定的queue,這種模式下不需要將exchange進行任何繫結(binding)操作,訊息傳遞時需要乙個routekey,可以簡單的理解為要傳送到的佇列名字。如果vhost中不存在該隊列名,訊息會丟失。

匹配訂閱模式(topic):任何傳送到topic exchange的訊息都會被**到所有關心routekey指定主題的queue中。就是每個佇列都有其關心的主題,所有的訊息都帶有乙個標題(routekey),exchange會將訊息**到所有關注主題能與routekey模糊匹配佇列。這種模式需要routekey並且提前繫結exchange與queue。在進行繫結時要提供乙個該佇列對應的主題。『 # 』表示0個或若干個關鍵字,『 * 』表示乙個關鍵字。如果exchange沒有發現能夠與routekey匹配的queue,訊息會丟失。

headers:headers exchange主要通過傳送的request message中的header進行匹配,其中匹配規則(x-match)又分為all和any,all代表必須所有的鍵值對匹配,any代表只要有乙個鍵值對匹配即可。headers exchange的預設匹配規則(x-match)是any。

這兩種模式非常簡單,只涉及生產者、佇列、消費者。

生產者負責生產訊息,將訊息傳送到佇列中,消費者監聽佇列,佇列有訊息就進行消費。

工作佇列模式其實就是有多個消費者的簡單模式。

當有多個消費者時,消費者平均消費佇列中的訊息。

這三種模式就要用到exchange了。 生產者不直接與佇列互動,而是將訊息傳送到交換機中,再由交換機將訊息傳送到已繫結改交換機的佇列中給消費者消費。

常用的交換機型別有 3 種:fanout、direct、topic。

fanout不處理路由鍵,很像子網廣播,每台子網內的主機都獲得了乙份複製的訊息。

發布/訂閱模式就是指使用fanout交換模式。fanout 型別交換機**訊息是最快的。

direct模式處理路由鍵,需要路由鍵匹配才能**。 路由模式使用的是 direct 型別的交換機。

topic:將路由鍵和某模式進行匹配。

主題模式使用的是 topic 型別的交換機。

RabbitMQ的使用(二)work模式

昨天通宵上線 白天睡了一天,下午7.00才醒,做個飯繼續學習。接著上文最普通的佇列乙個生產者推送,乙個消費者消費,如果乙個生產者有多個消費者那會是什麼樣呢。今天我用乙個for迴圈生產50個訊息來讓消費者消費 package com.hc.work import com.hc.mqutil.mquti...

rabbitMQ模式詳解

工作模式 工作原理 當生成者產生訊息後,儲存到佇列當中,c1和c2分別是監聽佇列的兩個消費者 工作模式內部採用的是輪訓的機制依次執行訊息 發布訂閱者模式 p provider 生產者 x exchange 代表交換機 c1 隻間聽c1的訊息佇列 c2 只監聽c2的訊息佇列 說明 只要佇列繫結了交換機...

RabbitMQ路由模式

模型 路由模式與發布訂閱模式非常相似,但是路由模式增加了路由鍵的配置,生產者在傳送訊息到交換機的時候會指定乙個routingkey,用於匹配佇列,同時佇列繫結到交換機時也會指定routingkey,交換機在向佇列傳送訊息時,會根據routingkey來匹配。生產者public class provi...