分佈式架構之rabbitMQ入門

一、簡介

1、消息中間件:利用高效可靠的消息傳遞機制進行和平臺不耦合的數據交流,利用數據通信來進行分佈式系統的集成。由JMS發展而來。

2、rabbitMQ:採用Erlang語言實現AMQP的消息中間件,用在分佈式系統中存儲轉發消息。整體模型架構如下:

  • producer:生產者,發送消息的那方,消息包含消息體(payload)和標籤
  • Consumer:消費者,接收消息的那方,只得消息體,標籤在路由過程丟棄,消費者不知道誰是生產者
  • Exchange:交換器,將消息路由到一或多個隊列,有多種類型
  • Queue:隊列,存儲消息的地方
  • Broker:服務節點,相當於生產者和消費者的中介
  • RoutingKey:路由鍵,消息的路由規則
  • Binding:綁定,關聯交換器和隊列,BindingKey匹配上RoutingKey時,消息就到指定的隊列,部分交換器類型纔有用,比如fanout類型下就沒用

二、分類

1、點對點(P2P)模式:基於隊列,生產者發送消息到隊列,消費者從隊列中接收

2、發佈/訂閱(Pub/Sub)模式:基於topic,發佈者發送消息到某主題,訂閱者從主題中訂閱消息

三、交換器類型

1、fanout:把消息路由到所有綁定的隊列,都收到一份

2、direct:根據RoutingKey投遞到相應的隊列

3、topic:使用通配符的方式投遞相應的隊列

4、headers:根據消費的headers屬性來匹配 Queue 和 Exchange 綁定時指定的鍵值對

四、工作過程

1、生產者

  • Producer連接Broker,建立Connection,開啓Channel
  • Producer聲明一個Exchange,設置屬性
  • Producer聲明一個Queue,設置屬性
  • Producer通過RoutingKey將Exchange和Queue兩者Binding
  • Producer發送消息到Broker,包括RoutingKey、Exchange等信息
  • Exchange根據接收的RoutingKey找到匹配的Queue
  • 找到後,將消息存入,找不到則根據配置選擇丟棄或者回退
  • 關閉Channel和Connection

2、消費者

  • Consumer連接Broker,建立Connection,開啓Channel
  • Consumer向Broker請求消費Queue中的消息,可設置回調函數
  • 等待,接收消息
  • Consumer ack接收到的消息
  • rabbitMQ刪除隊列中被 ack 的消息
  • 關閉Channel和Connection

 

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