RabbitMq 详解
1、RabbitMq 原理
1、Message?
消息,消息是不具名的,它由消息頭和消息體組成。消息體是不透明的,而消息頭則由一系列的可選屬性組成,這些屬性包括routing-key(路由鍵)、priority(相對于其他消息的優先權)、delivery-mode(指出該消息可能需要持久性存儲)等。
2、Publisher
消息的生產者,也是一個向交換器發布消息的客戶端應用程序。
3、Consumer
消息的消費者,表示一個從消息隊列取得消息的客戶端應用程序。
4、Exchange
交換器,用來接收生產者發送的消息并將這些消息路由給服務器中的隊列。
3種常用的交換類型:
1、direct(發布與訂閱,完全匹配)
2、fanout(廣播)
3、topic(主題、規則匹配)
5、Binding
關系綁定,用于消息隊列和交換器之間的關聯,通過Message中的路由鍵將隊列和交換器連接起來,即不同的Message走不同的消息隊列
6、Queue
消息隊列,用來保存消息直到發送給消費者。他是消息的容器,也是消息的終點。一個消息可投入一個或多個隊列、消息一直在隊列里面,等待消費者連接到這個隊列將其取走。
7、routing key(路由鍵)
路由鍵:RabbitMQ決定消息該投遞到那個隊列的規則。
隊列通過路由鍵綁定到交換器。
消息發送到MQ服務器時,消息將擁有一個路由鍵,即便是空的,RabbitMQ也會將其和綁定使用的路由鍵進行匹配。
如果相匹配,消息將會投遞到該隊列。
如果不匹配,消息將會進入黑洞。
8、Connection
指Rabbit服務器和服務建立的TCP鏈接。
9、Channel
1.chanel 信道,是TCP里面的虛擬連接。例如:電纜相當于TCP,信道是一條獨立的光纖,一條TCP連接上創建多條信道是沒有限制的。
2.TCP一旦打開,就會穿件AMQP信道
3.無論發布消息,接受消息,訂閱隊列,這些動作都是通過信道完成的。
10、Virtual Host?
虛擬主機,每一個vhost本質上就是一個mini版的RabbtMQ服務器,擁有自己的隊列,交換器,綁定和權限機制。vhost是AMQP概念的基礎,必須在連接時指定,RabbitMQ默認的vhost 是 /
11、Broker
表示消息隊列服務器實體。
12、交換器和隊列的關系
交換器是通過路由鍵和隊列綁定在一起的,如果消息擁有的路由鍵跟隊列和交換器的路由鍵匹配。那么消息就會被路由到該綁定的隊列中去。
也就是說,消息隊列的過程中,消息首先會經過交換器,接下來交換器在通過路由器匹配分發消息到具體的隊列中取。
路由鍵可以理解為匹配的規則,即我們通常說的key。
13、RabbitMQ 為什么要需要信道?為什么不是TCP直接通信?
1.TCP的創建和銷毀,開銷大,創建要3次握手,銷毀要4次分手。
2.如果不用信道,那么應用程序就會TCP連接到rabbit,高峰時每秒成千上萬條連接會造成資源的巨大浪費,而且操作系統每秒處理TCP連接數也是有限制的,必定造成性能瓶頸。
3.信道的原理是一條線程一條信道,多條線程多條信道同用一條TCP連接。一條TCP連接可以容納無限的信道,即使每秒成千上萬的請求也不會造成瓶頸。
?
?
轉載于:https://www.cnblogs.com/BestWishesZJ/p/10650104.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的RabbitMq 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一分钟检测应用状态 | 企业应用健康扫描
- 下一篇: 南邮 AAencode