Java教程之RabbitMQ介紹

千鋒武漢發表於2021-04-25

   前言

  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中訊息模式

   1、簡單佇列

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

圖片1

   2、工作佇列

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

圖片2

   3、釋出訂閱模式

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

圖片5

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

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

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

   4、路由模式

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

圖片3

   5、主題模式

  又稱萬用字元模式。

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

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

圖片4

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

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

相關文章