【RabbitMQ】生產者,消費者,通道,佇列,交換器和繫結
瞭解訊息通訊中的一些重點概念對於深化對RabbitMQ的理解有重要的意義;下面從生產者,消費者,通道,佇列,交換器和繫結,來介紹他們在訊息通訊過程中的角色和作用;
生產者:
建立訊息,然後釋出到代理伺服器(RabbitMQ)
消費者:
連線到代理伺服器(RabbitMQ)上,並訂閱到佇列上。不會知道誰是訊息的生產者
整個過程:
生產者建立訊息,消費者接收訊息。
訊息:包括有效載荷與標籤
有效載荷:要傳輸的資料
標籤:描述有效載荷,並且RabbitMQ使用標籤決定誰將獲得訊息的拷貝;
通道:
為什麼會有,作用?
連線到RabbitMQ,才能消費或者釋出訊息,通道是建立在“”真實“”TCP連線內的虛擬連線。AMQP命令都是通過通道傳送出去的。
TCP連線和通道的關係
在應用程式與代理伺服器之間建立一個TCP連線,TCP一旦開啟,就會建立AMQP通道
電纜相當於TCP,通道是一條獨立光纖束,一條TCP連線上建立多少條通道是沒有限制的。
為什麼不使用TCP連線傳送AMQP命令
1.建立和銷燬TCP會話,開銷大
2.如果使用TCP,每個執行緒連線到RabbitMQ,都要建立連線,造成浪費和效能瓶頸
3.使用一個TCP連線,能夠滿足效能,並且保證執行緒私密性。效果更好。
佇列:
AMQP訊息路由必須三部分:交換器,佇列,繫結
生產者把訊息釋出到交換器,訊息最後到達佇列,被消費者接收,繫結決定了訊息如何從路由器路由到特定的佇列。
佇列是訊息通訊的基礎模組
1.為訊息提供了處所,訊息在此等待消費
2.對負載均衡來說,佇列是絕佳方案,讓RabbitMQ迴圈的方式均勻分配訊息。
3.佇列是Rabbit中訊息的最後終點(除非訊息進入“”黑洞“”)
交換器和繫結
消費者從佇列中獲取訊息,但是訊息是如何到達佇列的呢?
將訊息投遞到佇列時,通過把訊息傳送給交換器來完成。根據確定的規則,RabbitMQ會決定訊息投遞到那個佇列。這個規則叫路由鍵(routing key),佇列通過路由鍵繫結到交換器。當把訊息傳送傳送到代理伺服器時,訊息將擁有一個路由鍵,RabbitMQ會將其和繫結使用的路由鍵進行匹配。匹配成功,訊息會投遞到佇列,不匹配則進入黑洞
使用交換機和繫結完成解耦,對於傳送訊息給伺服器的一方來說,不需要關係伺服器另一端的邏輯。伺服器會根據路由鍵將訊息從交換器路由到佇列。
在AMQP中定義類4種型別的交換器:direct,fanout,topic和header。header交換器與其他3個不同,它允許匹配AMQP訊息的header而不是路由鍵,不常用;
訊息佇列的使用過程大概如下:
(1)客戶端連線到訊息佇列伺服器,開啟一個channel。
(2)客戶端宣告一個exchange,並設定相關屬性。
(3)客戶端宣告一個queue,並設定相關屬性。
(4)客戶端使用routing key,在exchange和queue之間建立好繫結關係。
(5)客戶端投遞訊息到exchange。
(6)exchange接收到訊息後,就根據訊息的key和已經設定的binding,進行訊息路由,將訊息投遞到一個或多個佇列裡。
相關文章
- rabbitMQ實戰生產者-交換機-佇列-消費者細談MQ佇列
- 阻塞佇列和生產者-消費者模式佇列模式
- PHP操作Beanstalkd佇列(2)生產者與消費者PHPBean佇列
- 十五、.net core(.NET 6)搭建RabbitMQ訊息佇列生產者和消費者的簡單方法MQ佇列
- 使用Python佇列和多執行緒實現生產者消費者Python佇列執行緒
- ActiveMQ 生產者和消費者demoMQ
- 什麼是阻塞佇列?如何使用阻塞佇列來實現生產者-消費者模型?佇列模型
- 架構設計:生產者/消費者模式[2]:佇列緩衝區架構模式佇列
- 生產者消費者模式模式
- 生產者消費者模型模型
- Java實現生產者和消費者Java
- 生產者和消費者(.net實現)
- 2.Python程式間的通訊之佇列(Queue)和生產者消費者模型Python佇列模型
- 生產消費者模式模式
- 九、生產者與消費者模式模式
- python 生產者消費者模式Python模式
- 使用BlockQueue實現生產者和消費者模式BloC模式
- 使用Disruptor實現生產者和消費者模型模型
- 實戰Spring4+ActiveMQ整合實現訊息佇列(生產者+消費者)SpringMQ佇列
- 用阻塞佇列實現一個生產者消費者模型?synchronized和lock有什麼區別?佇列模型synchronized
- edenhill/kcat:通用命令列非 JVM Apache Kafka 生產者和消費者命令列JVMApacheKafka
- 新手練習-消費者生產者模型模型
- Java實現生產者-消費者模型Java模型
- Java多執行緒——生產者和消費者模式Java執行緒模式
- 記錄一次日常開發中基於阻塞佇列的生產者和消費者模型佇列模型
- 使用slice和條件變數實現一個簡單的多生產者多消費者佇列變數佇列
- 插曲:Kafka的生產者案例和消費者原理解析Kafka
- 鎖,threading local,以及生產者和消費者模型thread模型
- java實現生產者消費者問題Java
- linux 生產者與消費者問題Linux
- 多執行緒之生產者消費者執行緒
- 直觀理解生產者消費者問題
- Java 生產者消費者模式詳細分析Java模式
- kafka中生產者和消費者APIKafkaAPI
- [Java併發程式設計實戰] 阻塞佇列 BlockingQueue(含程式碼,生產者-消費者模型)Java程式設計佇列BloC模型
- 再看rabbitmq的交換器和佇列的關係MQ佇列
- 讀者寫者與生產者消費者應用場景
- 多執行緒下的生產者和消費者-BlockingQueue執行緒BloC