RabbitMQ運行簡述

1.簡介

RabbitMQ是一個由Erlang語言實現了高級消息隊列協議(Advanced Message Queuing Protocol)的開源消息隊列服務軟件

2.核心概念

RabbitMq包含了Publisher、Message、Broker、Virtual Host、Exchange、Binding、Queue、Connectioon、Channel、Consumer;

  • Publisher:消息的生產者,向隊列中發送消息
  • message:消息生產者發送給Queue的消息,其中包含了消息內容、消息指定的Exchange、消息的路由鍵(routing-key)等信息
  • Broker: 消息隊列服務器實體(代理服務器),用於接受和分發消息
  • Virtual Host:虛擬主機,本質上就是一個mini版的代理服務器,默認的vhost:“/”,vhost是用戶級的,每個用戶只能訪問自己的vhost(一個用戶可以指派多個vhost),爲了安全性與可移植性每個vhost之間是絕對隔離的
  • Exchange:交換機,接受生產者發送的消息並根據交換機的類型和分發消息的策略來分發消息,包含4類型direct、fanout、topic、headers,direct可以實現點對點通訊模型,其餘的3個可以實現發佈-訂閱模型
    交換機類型:
    1. direct(默認類型):消息中帶的路由鍵(routing key)如果和Binding中的binding key一致(routing key和binding key必須完全匹配),交換機就會將消息發送到對應的隊列中
    2. fanout:廣播模式,每一個發送到Fanout Exchange的消息都會分發到所有綁定在該交換機上到隊列中,該類型不需要routing key,而且轉發消息的速度最快
    3. topic:通過對路由鍵的模糊匹配來分發消息到隊列中,模糊匹配的規則是使用符號"#“和符號”*“作爲通配符,”#" 匹配0個或多個"單詞"," * “匹配一個"單詞”
    4. headers: 通過AMQP的消息頭在進行綁定
  • Binding:綁定,基於路由鍵將Exchange和Queue連接在一起的路由規則,Exchange和Queue的綁定關係可以是多對多
  • Queue:消息隊列,消息的容器,用於保存生產者發送的消息直到消費者來將其取走,一條消息可進入到多個隊列
  • Connectioon: 網絡連接(TCP連接),生產者/消費者和代理服務器之間的TCP連接
  • Channel:信道,建立在TCP連接內的虛擬連接,節省TCP連接的資源消耗,無論是發佈消息、訂閱隊列還是接受消息都是通過信道完成的
  • Consumer:消息的消費者,從隊列中獲取消息

3.運行機制

在這裏插入圖片描述

  1. 消息的生產者將消息發送給borker中的Virtual
    Host
    (默認的vhost是“/”),vhost在將消息交給指定的Exchange
    ,Exchang在根據消息的Binding將消息交給指定的Queue
  2. 消息的消費者(consumer) 與消息的代理服務器建立起連接(connection),建立連接之後爲了節省資源在每個TCP連接中開闢了多個 管道(channel),隊列中的數據通過管道來返回給消費者。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章