Rabbitmq 常用工作模式總結
阿新 • • 發佈:2020-12-15
技術標籤:Rabbitmq
RabbitMQ 常用工作模式:
官網地址:https://www.rabbitmq.com/getstarted.html
Publish/Subscribe 釋出與訂閱模式
訂閱模式:
生產者會將訊息傳送到(Exchange )交換機,Exchange 型別是 Fanout,不同的佇列註冊到交換機中,不同的消費註冊到不同的佇列上。
- P:生產者,也就是要傳送訊息的程式,但是不再發送到佇列中,而是傳送到 x 交換機中
- C:消費者,訊息的接收者,會一直等待訊息的到來
- Queue:訊息佇列、接收訊息、快取訊息
- Exchange:交換機 (X),一邊,接收生產者傳送的訊息,另一邊,處理訊息。可以想作:生產者把訊息交給一個特別的佇列、這個特別的佇列把訊息遞交給所有佇列、或是將訊息丟棄等。至於交換機會如何處理訊息取決於交換機的型別。
- Exchange 常用型別:
1、Fanout:廣播,將訊息交給所有繫結到交換機的佇列。
2、Direct:定向,把訊息交給符合指定routing key 的佇列。
3、Topic:萬用字元,把訊息交給符合routing pattern(路由模式)的佇列。
使用場景:
一個訊息需要同時通知兩個不相同服務,或者一個功能需要同時更新 redis 和 mysql 。
Routing 路由模式
路由模式:
生產者把訊息傳送到交換機上,訊息上攜帶了具體的 rouing key ,交換機的型別是 Direct。Exchange 會將訊息攜帶 rouing key 跟佇列上繫結rouing key 作比較,然後再將訊息分配到不同 佇列上。
- 佇列與交換機的繫結,繫結時需要指定一個 rouing key (路由key)
- 生產者在向 Exchange 傳送訊息時,也需要指定 rouing key
- Exchange 會把訊息上的 rouing key 跟佇列的 rouing key進行匹配,匹配上的佇列才能接收到訊息。
使用場景:
一個訊息需要同時通知兩個不相同服務,但功能要求只讓一個服務接收,這個就可以使用路由模式。
Topics 主題模式
主題模式:
Topic 型別與 Direct 很相似,都是根據 rouing key 來匹配,但 Topic 的 rouing key 可以使用萬用字元。
Rouing key 萬用字元的語法 :* 星號代表一個單 # 井號代表一個或者多個單詞。
lwc.liuliu.*
//匹配
lwc.liuliu.liu
lwc.liuliu.ba
lwc.liuliu.#
///匹配
lwc.liuliu.liu.liu
lwc.liuliu.ba.ba
lwc.liuliu.liuliu