RabbitMQ核心概念
阿新 • • 發佈:2018-11-06
1. 基本概念
-
broker: server,訊息佇列伺服器的實體,他是一箇中間件應用,負責接受訊息生產的訊息,然後將訊息傳送之訊息接受之或者其他的broker.
-
Exchange: 訊息交換機,是訊息到達的第一個地方,訊息通過它指定的路由規則,分發到不同的訊息佇列中。
-
Queue: 訊息佇列
-
Binding: 繫結,作用就是將exchange和佇列進行繫結。
-
Routing key:路由關鍵字,Exchange根據該關鍵字進行指定的訊息投送。
-
Virtual host: 虛擬主機,通過虛擬主機來繼續對使用者進行不同許可權的分離。通過Virtual host來進行隔離exchange和Queue,不同的vitual host可以有相同的exchange和Queue
-
Connection:連線。
-
Channel: 訊息通道,所有訊息的流轉都是通過channel,每個channel代表的是一次會話。
-
Producer: 訊息的生產者。
-
consumer: 訊息的消費者。
2.訊息投遞到最後消費大致流程
producer(生產者)和RabbitMQ伺服器建立連線,通過Channel向Exchange傳送訊息,Exchange通過Routing key將訊息路由到佇列中(Queue),consuemr(消費者)繫結指定的佇列(Queue)接受訊息.
3. Exchange交換機的型別。
- fanout: 廣播模式,該模式下的routingKey會被忽略,此時會使用空字串來進行代替。
- direct: 完全根據key來進行匹配。此時的Routingkey必須完全匹配,如果此時Routing key匹配不到,訊息將會丟棄。
- topic: 匹配模式。通過匹配符號來進行匹配。例如*匹配一個詞,#匹配一個或多個。
- headers: 通過header來匹配。Headers是一個鍵值對。傳送者在傳送的時候定義一些鍵值對,接收者也可以在繫結佇列的時候也傳入一些鍵值對。亮著鍵值對匹配的話,則可以接受到訊息。匹配方式有兩種any和all>著兩種方式都在在接收端必須用鍵值"x-mactch"來定義。all代表定義的多個鍵值對都要滿足,而any則程式碼只要滿足一個就可以了。fanout,direct,topicexchange的routingKey都需要要字串形式的,而headers exchange則沒有這個要求,因為鍵值對的值可以是任何型別。