rabbitmq-交換機類型和工作模式

1. 五種交換機類型

1.1 Direct exchange(直連交換機)

1.2 Topic exchange(主題交換機)

1.3 Fanout exchange(扇形交換機)

1.4 Headers exchange(頭交換機)

1.5 System exchange(系統交換機)

其實是一種direct類型的交換機;

2. 六種工作(隊列、消息)模式

2.1 Hello World模式(簡單模式、點對點模式)

只需要指定隊列,不需要指定交換機,會使用系統默認交換機-System Exchange;

2.2 Work模式(工作模式)

只需要指定隊列,不需要指定交換機,會使用系統默認交換機-System Exchange;

多個消費者監聽同一個隊列,有兩種不同的分發機制(輪詢、公平);

輪詢實現(真正的公平,消費次數幾乎一樣):1. 自動ack
公平實現(能者多勞):1. 設置一次只從隊列取一條數據 channel.basicQos(1) 2. 手動ack

2.3 Publish/Subscribe模式(發佈訂閱模式)

需要聲明交換機,並指定交換機類型爲fanout,綁定隊列,但是不用指定binding key(指定了也沒什麼作用);

2.4 Routing模式(路由模式)

需要聲明交換機,並指定交換機類型爲direct,綁定隊列,並指定binding key,
生產者發送消息給交換機時,指定routing key,交換機根據routing key匹配相同的binding key,
然後發送消息到對應的隊列上;

一個隊列可以指定多個binding key;
也可以使用headers交換機;
將交換機與隊列綁定時,設置消息頭裏的參數值,
生產者發送數據時,帶上消息頭參數值,
交換機進行匹配,然後發送消息到對應的隊列上;

當"x-match"的值爲"any"時,只需要消息頭的任意一個值匹配成功即可,
當"x-match"值爲"all"時,要求消息頭的所有值都需相等纔可匹配成功

2.5 Topic模式(主題模式)

需要聲明交換機,並指定交換機類型爲topic,綁定隊列,並指定binding key(帶有通配符),
生產者發送消息給交換機時,指定routing key,交換機根據routing key模糊匹配binding key,
然後發送消息到對應的隊列上;

通配符有兩個:
1. "#" :任意級(單詞與單詞之間用“.”分割);
2. "*" :有且僅有一級;

2.6 RPC模式(集羣模式)

主動拉取;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章