好程式設計師Java學習資源分享RabbitMQ介紹

好程式設計師IT發表於2019-08-30

好程式設計師Java 學習資源分享 RabbitMQ 介紹,前言,RabbitMQ 是基於 AMQP 協議( Advanced Message Queue Protocol )的訊息中介軟體

什麼是訊息佇列

訊息佇列屬於程式間通訊的一種方式,使用訊息佇列可以透過非同步方式處理資料,藉此可以提高系統效能。我們可以把訊息當作存放資料的容器,訊息的消費者可以從佇列中獲取資料,進行處理。常見的訊息佇列有:ActiveMQ RabbitMQ Kafka RocketMQ 等。

RabbitMQ 中用到基本概念

Broker :訊息佇列的伺服器實體

   Exchange :訊息交換機,它指定訊息按什麼規則,路由到哪個佇列

   Queue :訊息佇列載體,每個訊息都會被投入到一個或多個佇列

   Binding :繫結,它主要是把 exchange queue 按照路由規則繫結起來

   Routing Key :路由關鍵字, exchange 根據這個關鍵字進行訊息投遞

   vhost :虛擬主機,一個 broker 裡可以開設多個 vhost ,用作不同使用者的許可權分離

   producer :訊息生產者,投遞訊息的程式

   consumer :訊息消費者,接收訊息的程式

   channel :訊息通道,在客戶端的每個連線裡,可以建立多個 channel ,每個 channel 代表一個會話任務

RabbitMQ 中訊息模式

簡單佇列

一個生產者對應一個消費者


工作佇列


一個生產者,多個消費者,一個訊息只能發給一個消費者,spring 中整合 rabbitmq 時,預設採用公平分發

 

釋出訂閱模式

傳遞一個訊息到多個消費者中,藉助該模式可以釋出的訊息將被廣播給所有接收者。


使用該模式需要藉助交換機,生產者將訊息傳送到交換機,再透過交換機到達佇列。

RabbitMQ 中有四種交換機: direct/topic/headers/fanout 。預設交換機是 direct ,釋出與訂閱的實現使用 fanout

使用交換機時,每個消費者有自己的佇列,生產者將訊息傳送到交換機(X),每個佇列都要繫結到交換機。

4 路由模式

生產者將訊息傳送到direct 交換機(路由模式需要藉助直連交換機實現),在繫結佇列和交換機的時候有一個路由 key ,生產者傳送的訊息會指定一個路由 key ,那麼訊息只會傳送到相應 key 相同的佇列,接著監聽該佇列的消費者消費訊息。也就是讓消費者有選擇性的接收訊息。


主題模式

又稱萬用字元模式。

使用直連交換機可以改善我們的系統,但是它仍有侷限性,它不能實現多重條件的路由。在訊息系統中,我們不僅想要訂閱基於路由鍵的佇列,還想訂閱基於生產訊息的源,這時候可以使用topic 交換機。

使用主題交換機時,路由鍵的語法形式是採用點分割的有意義的單詞。例如"goods.stock.info"


其中:* 星號代表一個單詞, # 井號代表 0 個或多個單詞


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2655602/,如需轉載,請註明出處,否則將追究法律責任。

相關文章