RabbitMQ的模型和基本概念

對RabbitMQ的模型的理解和簡單的概念總結

RabbitMQ模型如下:

96388546.jpg (687×306)

生產者發出一些消息(包含消息頭和消息體),消息頭是透明的,消息體是不透明的,可以在消息頭裏面指定routing-key來間接規定綁定規則。生產者將生產出來的消息發送到交換機上面去,交換機則會把消息分配到對應的消息隊列中去,等待消費者的消費。

如果很多個消費者綁定了同一個消息隊列,那麼有消息發送到消息隊列時,只能有一個消費者接收到該消息,其他的消費者接收不到,避免了同一消息被重複消費,所以RabbitMQ不支持隊列層面上的廣播消費(可以通過交換機來完成)

交換機通過BindingKey來與消息隊列綁定在一起,當消息進入交換機的時候,會因爲交換機的種類不同而產生不同的行爲

交換機主要種類如下:

  • fanout

交換機會將消息直接發送到所有與他綁定了的隊列中,不做任何判斷

  • direct

交換機將消息發送到那些BindingKey與RoutingKey完全匹配的隊列中

  • topic

與direct類似,不過支持BindingKey和RoutingKey的模糊匹配,#匹配0或多個單詞,*匹配一個單詞。

單詞的概念:被點(.)分割的爲一個單詞

如cn.luckycurve.*可以與cn.luckycurve.rabbitmq匹配上

  • headers (不推薦)

如果消息沒有被任何交換機接收,那麼該消息會被丟棄或者返回給生產者(需要配置mandatory參數)

RabbitMQ的安裝——選擇帶Management的版本去安裝

docker pull rabbitmq:3.7.24-management

docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq babd922fd7bc

賬號:guest 密碼:guest

記得第一次登陸15672的管理界面一定要刪除guest用戶(如果你的ip暴露在公網上的話)

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