1. 程式人生 > 其它 >Rabbitmq 常用工作模式總結

Rabbitmq 常用工作模式總結

技術標籤:Rabbitmq

RabbitMQ 常用工作模式:

官網地址:https://www.rabbitmq.com/getstarted.html

Publish/Subscribe 釋出與訂閱模式

在這裡插入圖片描述
訂閱模式:

生產者會將訊息傳送到(Exchange )交換機,Exchange 型別是 Fanout,不同的佇列註冊到交換機中,不同的消費註冊到不同的佇列上。

  • P:生產者,也就是要傳送訊息的程式,但是不再發送到佇列中,而是傳送到 x 交換機中
  • C:消費者,訊息的接收者,會一直等待訊息的到來
  • Queue:訊息佇列、接收訊息、快取訊息
  • Exchange:交換機 (X),一邊,接收生產者傳送的訊息,另一邊,處理訊息。可以想作:生產者把訊息交給一個特別的佇列、這個特別的佇列把訊息遞交給所有佇列、或是將訊息丟棄等。至於交換機會如何處理訊息取決於交換機的型別。
    交換機只負責轉發訊息,不具備儲存訊息的能力,假如沒有任何佇列與 Exchange 繫結,或者沒有符合路由規則的佇列,那麼訊息將會丟失!
  • 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