RabbitMq六種使用模式 3 訂閱發布模式

2021-06-22 18:19:21 字數 1356 閱讀 7607

之前的例子都是講訊息直接傳送給指定的佇列;現在需要傳送給多個佇列,訂閱/發布模式

生產者不再將訊息直接發往佇列,而是發往exchange,然後exchange再傳送給在該exchange訂閱的佇列;

exchange需要知道如何對接收到的訊息進行**

exchange有四種型別:direct, topic, headers and fanout

將訊息發給所有在exchange註冊的佇列

channel.exchangedeclare("logs", "fanout");//1:宣告乙個fanout的exchange 

channel.queuebind(queuename, "logs", "");//將佇列在exchange註冊 

channel.basicpublish("logs", "", null, message.getbytes());//傳送訊息

fanout型別的exchange可以將訊息傳送給在exchange上註冊的所有的佇列;

佇列註冊到direct型別的exchange時增加了route_key,每乙個訊息都有乙個key,訊息的key與佇列的route_key一致時才會發往該佇列;

direct型別中有乙個缺點是:必須要訊息的key和訂閱的route_key完全一致才會傳送到相應佇列; 

topic型別增加了相當於模糊匹配的功能;

*代表乙個字元

#代表0個或多個字元

channel.exchangedeclare(exchange_name, "topic");

channel.basicpublish(exchange_name, "key.t", null, message.getbytes());

channel.queuebind(queuename, exchange_name, "key.*");

RabbitMQ六種佇列模式 工作佇列模式

rabbitmq六種佇列模式 簡單佇列 rabbitmq六種佇列模式 工作佇列 本文 rabbitmq六種佇列模式 發布訂閱 rabbitmq六種佇列模式 路由模式 rabbitmq六種佇列模式 主題模式 上文我們了解了 rabbitmq 六種佇列模式中的簡單佇列,也是非常的簡單,比較容易理解。但是...

六種單列模式

確保某乙個類只有乙個例項.1 餓漢式單列 public class singleone 構造方法私有 禁止建立 private singleone 2 懶漢式單列 public class singletwo 同步方法 每次呼叫都同步 消耗資源 public static synchronized ...

jBPM的tasknode的六種模式

jbpm的tasknode的六種模式 last 預設值。當最後乙個任務完成時 signal 當 task node 沒有建立任務時,直接 signal。last wait 當最後乙個任務完成時 signal 當 task node 沒有建立任務時等待。first 當第乙個任務完成時 signal 當...