1. 程式人生 > >RabbitMQ如何工作和RabbitMQ核心概念

RabbitMQ如何工作和RabbitMQ核心概念

RabbitMQ是一個開源的訊息代理軟體。它接受來自生產者的訊息並將其傳遞給消費者。它就像一箇中間人,可以用來減少Web應用程式伺服器的負載和交付時間。

RabbitMQ如何工作

讓我們簡要介紹一下RabbitMQ的工作原理。

讓我們首先熟悉RabbitMQ的一些重要概念:

  • 生產者:傳送訊息的應用程式。

  • 消費者:接收訊息的應用程式。

  • 佇列:儲存訊息的緩衝區。

  • 訊息:通過RabbitMQ從生產者傳送給消費者的資訊。

  • 連線:連線是應用程式和RabbitMQ代理之間的TCP連線。

  • 通道:通道是連線內的虛擬連線。當您從佇列中釋出或使用訊息時 - 它們都是通過通道完成的。

  • Exchange:接收來自生產者的訊息,並根據交換型別定義的規則將其推送到佇列。要接收訊息,需要將佇列繫結到至少一個交換。

  • 繫結:繫結是佇列和交換之間的連結。

  • 路由金鑰:路由金鑰是交換機檢視的金鑰,用於決定如何將訊息路由到佇列。路由金鑰就像訊息的地址。

生產者將訊息傳送/釋出給代理 - > 消費者從代理接收訊息。RabbitMQ是生產者和消費者之間的通訊中介軟體,即使它們在不同的機器上執行。

當生產者向佇列傳送訊息時,它不會直接傳送,而是使用交換機發送。下面的設計演示了主要的三個元件如何相互連線。

負責將訊息路由到不同佇列的交換代理。這樣訊息就可以從生產者接收到交換機,然後再次轉發到佇列。這被稱為“釋出”方法。

訊息將從佇列中獲取並消耗; 這被稱為'消費'。

將訊息傳送到多個佇列

通過使用更復雜的應用程式,我們將擁有多個佇列。因此訊息將在多個佇列中傳送它。

向多個佇列交換髮送訊息通過繫結和路由金鑰連線到佇列。繫結是您設定為將佇列連線到交換機的“連結”。Routing鍵是一個訊息屬性。在決定如何將訊息路由到佇列時(取決於交換型別),交換機可能會檢視此金鑰。

訊息中心

訊息不會直接釋出到佇列,而是生成器將訊息傳送到交換機。一個交換負責的訊息不同佇列的路由。一個交換接受來自生產應用程式的訊息並將其路由訊息佇列與繫結和路由鍵的幫助。阿結合是佇列和交換之間的連結。

RabbitMQ中的訊息流

  • 製片人將訊息釋出到交換。建立交換時,必須指定它的型別。稍後將詳細說明不同型別的交換。

  • 交換接收訊息,現在負責該訊息的路由。交換機將不同的訊息屬性考慮在內,例如路由金鑰,具體取決於交換型別。

  • 必須從交換到佇列建立繫結。在這種情況下,我們看到來自交換的兩個不同佇列的兩個繫結。Exchange根據郵件屬性將郵件路由到佇列中。

  • 訊息留在佇列中,直到消費者處理它們

  • 消費者處理訊息。

交換型別

  1. 直接:直接交換基於訊息路由金鑰將訊息傳遞到佇列。

  2. 扇出:扇出交換將訊息路由到繫結到它的所有佇列。

  3. 主題:主題交換在路由金鑰和繫結中指定的路由模式之間進行萬用字元匹配。

  4. 標頭:標頭交換使用郵件標頭屬性進行路由。

RabbitMQ核心概念

在深入挖掘RabbitMQ之前,需要先介紹一些重要的概念。

  • 生產者:傳送訊息的應用程式。

  • 消費者:接收訊息的應用程式。

  • 佇列:儲存訊息的緩衝區。

  • 訊息:通過RabbitMQ從生產者傳送給消費者的資訊。

  • 連線:連線是應用程式和RabbitMQ代理之間的TCP連線。

  • 通道:通道是連線內的虛擬連線。當您從佇列中釋出或使用訊息時 - 它們都是通過通道完成的。

  • Exchange:接收來自生產者的訊息,並根據交換型別定義的規則將其推送到佇列。要接收訊息,需要將佇列繫結到至少一個交換。

  • 繫結:繫結是佇列和交換之間的連結。

  • 路由金鑰:路由金鑰是交換機檢視的金鑰,用於決定如何將訊息路由到佇列。路由金鑰就像訊息的地址。

  • AMQP:AMQP(高階訊息佇列協議)是RabbitMQ用於訊息傳遞的協議。

  • 使用者:可以使用給定的使用者名稱和密碼連線到RabbitMQ。可以為每個使用者分配許可權,例如在例項中讀取,寫入和配置許可權的許可權。

  推薦閱讀:   RabbitMQ如何工作和RabbitMQ核心概念   RabbitMQ教程 HelloWorld示例   RabbitMQ教程,釋出/訂閱示例