1. 程式人生 > >RabbitMQ核心概念

RabbitMQ核心概念

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則沒有這個要求,因為鍵值對的值可以是任何型別。