RabbitMQ 工作模式

2022-08-10 09:09:13 字數 1848 閱讀 3682

第一種:簡單模式

一、生產者

public static void main(string args) throws ioexception, timeoutexception
二、消費者

public static void main(string args) throws ioexception, timeoutexception 

};/**

* 引數: 1、佇列名稱

* 2、是否自動確認

* 3、**物件

*/channel.basicconsume("hello_world",true,consumer);

}

三、測試結果

第二種:work queues工作佇列模式

與簡單模式相比,多了乙個或一些消費端,多個消費端共同消費乙個佇列中的訊息。對於任務過重或任務較多情況使用工作佇列模式可以提高處理效率。例如:簡訊服務部署等。

第三種:pub/sub訂閱模式,fanout:廣播模式,將訊息交給所有繫結到交換機的佇列。

在訂閱模式中,多了exchange角色,且過程稍有變化。

exchange:交換機(x)。接收生產者傳送的訊息,根絕exchange的型別,將訊息遞交給某個特別佇列、所有佇列或者將訊息丟棄。常見型別有fanout、direct、topic。

交換機只負責**訊息,不具備儲存訊息能力,如果沒有任何佇列與exchange繫結或者沒有符合路有規則的佇列,那麼訊息將丟失!

生產者:

public static void main(string args) throws ioexception, timeoutexception
第四種 routing路由模式,direct:定向模式,將訊息交給符合指定routing key的佇列。

與fanout大致一樣,不同的地方在於交換機型別為direct,繫結佇列與交換機,傳送訊息時需指定routingkey。

channel.queuebind(queuename1,exchangename,"routingkey");
channel.basicpublish(exchangename,"routingkey",null,body.getbytes());
第五種 topics:萬用字元模式,將訊息交給符合routing pattern的佇列。

匹配規則:

繫結鍵binding key也必須是這種形式。以特定路由鍵傳送的訊息將會傳送到所有繫結鍵與之匹配的佇列中。但繫結鍵有兩種特殊的情況: 

①*(星號)僅代表乙個單詞 

②#(井號)代表任意個單詞

示例:以上圖為例:

*.orange.* :  匹配以 任意乙個單詞字元開頭中間包含 .orange. 以任意乙個單詞字元結尾 的字串。比如 a.orange.b, sdfsd.orange.fdsfsdf 等(注意是乙個單詞)。

lay.# :只要一lay.開頭的都匹配,他可以匹配lay.a, lay.a.b, lay.b.c等。

RabbitMQ工作模式

rabbitmq工作模式有六種 工作佇列模式,發布訂閱模式,路由模式,萬用字元模式,header模式和rpc模式。1.工作佇列模式 2.發布訂閱模式 交換機型別為funout。3.路由模式 交換機型別為direct。路由模式和發布訂閱模式區別 1 發布訂閱模式不需要繫結routingkey,訊息傳送...

rabbitmq 工作模式

c1 c2輪流接收訊息 啟動兩個接受者 channel.queuedeclare queue que durable false,exclusive false,autodelete false,arguments null 交換機設定為空字串 p發給乙個交換機,這個交換機繫結兩個佇列,c1 c2各...

RabbitMQ 工作模式例項

rabbitmq初始化start 除了 模式外 其他的模式都是由 佇列 交換機 key 不同組合實現的 type rabbitmq struct 建立rabbitmq 例項 func newrabbitmq queuename,exchange,key string rabbitmq,error v...