RabbitMQ(二) RabbitMQ 原理(重要)
1. Message
訊息。訊息是不具名的,它由訊息頭訊息體組成。訊息體是不透明的,而訊息頭則由
一系列可選屬性組成,這些屬性包括:routing-key(路由鍵)、priority(相對於其他訊息的優先
權)、delivery-mode(指出訊息可能永續性儲存)等。
2.Publisher
訊息的生產者。也是一個向交換器釋出訊息的客戶端應用程式。
3.Consumer
訊息的消費者。表示一個從訊息佇列中取得訊息的客戶端應用程式。
4.Exchange
交換器。用來接收生產者傳送的訊息並將這些訊息路由給伺服器中的佇列。
三種常用的交換器型別
a. direct(釋出與訂閱完全匹配)
b. fanout(廣播)
c. topic(主題,規則匹配)
5.Binding
繫結。用於訊息佇列和交換器之間的關聯。一個繫結就是基於路由鍵將交換器和訊息
佇列連線起來的路由規則,所以可以將交換器理解成一個由繫結構成的路由表。
6.Queue
訊息佇列。用來儲存訊息直到傳送給消費者。它是訊息的容器,也是訊息的終點。一
個訊息可投入一個或多個佇列。訊息一直在佇列裡面,等待消費者連結到這個佇列將其取
走。
7.Routing-key
路由鍵。RabbitMQ 決定訊息該投遞到哪個佇列的規則。佇列通過路由鍵繫結到交換器。
訊息傳送到MQ 伺服器時,訊息將擁有一個路由鍵,即便是空的,RabbitMQ 也會將其
和繫結使用的路由鍵進行匹配。如果相匹配,訊息將會投遞到該佇列。如果不匹配,訊息將會進入黑洞。
8.Connection
連結。指rabbit 伺服器和服務建立的TCP 連結。
9.Channel
通道。
1,Channel 中文叫做通道,是TCP 裡面的虛擬連結。例如:電纜相當於TCP,通道是 一個獨立光纖束,一條TCP 連線上建立 多條通道是沒有問題的。
2,TCP 一旦開啟,就會建立AMQP 通道。
3,無論是釋出訊息、接收訊息、訂閱佇列,這些動作都是通過通道完成的。
10.Virtual Host
虛擬主機。表示一批交換器,訊息佇列和相關物件。虛擬主機是共享相同的身份認證和加密環境的獨立伺服器域。每個vhost 本質上就是一個mini 版的RabbitMQ 伺服器,擁有自己的佇列、交換器、繫結和許可權機制。vhost 是AMQP 概念的基礎,必須在 連結時指定,RabbitMQ 預設的vhost 是/
11.Borker
表示訊息佇列伺服器實體。
重點:
a )資訊如何傳送到相應的佇列
在實際使用中,不同的訊息需要傳遞到不同的訊息佇列中,就要有相應的傳遞規則,這些規則就是“路由鍵”。
而交換器就是根據路由鍵定義的規則將訊息傳遞到相應的佇列中。
b) 交換器型別
1.Direct 交換器(釋出與訂閱完全匹配)
通過完全匹配路由鍵的名稱將資訊傳遞給消費者。
2.Topic 交換器(主題,規則匹配)
路由鍵名稱可以使用萬用字元形式傳遞訊息
3.Fanout 交換器(廣播)
不設定路由鍵的名稱,訊息傳送給所有的消費者。