訊息中介軟體簡介

語言: CN / TW / HK

1、概述:

1、大多數應用中,可通過訊息服務中介軟體來提升系統非同步通訊、擴充套件解耦能力

2、訊息服務中兩個重要概念

  訊息代理-message broker 和目的地-destination

  當訊息傳送者傳送訊息後,將由訊息代理接管,訊息代理保證訊息傳遞到制定目的地。

3、訊息佇列主要有兩種形式的目的地

  1、佇列:點對點通訊 point-to-point

  2、主題:釋出publish、訂閱/subscribe訊息通訊

4、點對點式:

  訊息傳送者傳送訊息,訊息代理將其放入到一個佇列中,訊息接收者從佇列中獲取訊息內容,訊息讀取後被移除佇列。

  訊息讀取後被移除佇列

  訊息只有唯一的傳送者和接受者,但不是說只能有一個接收者。

5、釋出訂閱式

  傳送者(釋出者)傳送訊息到主題,多個接收者(訂閱者)監聽(訂閱這個主題),那麼就會在訊息到達時同時受到訊息

6、JMS(java message service)java訊息服務

  基於JVM訊息代理的規範。ActiveMQ、HornetMQ是JMS實現

7、AMQP(advanced message queuing protocol)

    高階訊息佇列協議,也是一個訊息代理的規範,相容JMS

    rabbitMQ是AMQP的實現;

 

8、spring支援

  --spring-jms提供了對jms的支援

  --spring-rabbit提供了對AMQP的支援

  --需要ConnectionFactory的實現來連線訊息代理

  --提供JmsTemplate、RabbitTemplate來發送訊息

  [email protected](JMS)、@RabbitListener(AMQP)註解在方法上監聽訊息代理髮布的訊息

  [email protected]、@EnableRabbit開啟支援

9、Springboot 自動配置

  --jmsAutoConfiguration

  --RabbitAutoConfiguration

RabbitMQ簡介

rabbitMQ簡介:

  RabbitMQ是一個由erlang開發的AMQP(Advanced Message Queue Protocol)的開源實現。

  核心概念:

Message訊息

訊息是不具名的,它是由訊息頭和訊息體組成。訊息體是不透明的,而訊息頭則是由一系列的可選屬性組成,這些屬性包括routing-key路由鍵、priority(相對於其它訊息的優先權)、delivery-mode指出該訊息可能需要永續性儲存等。

Publisher

訊息的生產者,也是一個向交換器釋出訊息的客戶端應用程式

Exchange

交換器,用來接收生產者傳送的訊息並將這些訊息路由給伺服器中的佇列。

exchange有四種類型,direct預設,fanout,topic和headers,不同型別的exchange轉發訊息的策略有所區別;

RabbitMQ穩定性可靠性高;流行的訊息中介軟體;

訊息:訊息頭(路由鍵,優先權,持久儲存),訊息體(不透明);

交換器:將訊息路由到佇列;

Direct:能實現jms中點對點訊息模型;

後邊三個可以實現釋出訂閱模型;

訊息是通過交換器來決定法發往那個佇列;

訊息佇列: 儲存訊息的容器;位於訊息伺服器。一直等到來人把他取走才不復存在

交換器與訊息佇列的關聯規則被稱為繫結;

交換器:訊息佇列=多對多

一個tcp連線來開多個通道;(chanel)

RabitMQ伺服器內部劃分為很多虛擬主機;

裡邊的每一個就是一個小的rabitmq

獨立執行;他們之間每個都是隔離的;每個虛擬主機有自己的訊息佇列,交換器,路由規則;

還有自己的許可權控制戒指,身份認證加密資訊等;

連結rabitmq的時候,預設連結裡邊的/;用路徑來劃分;

RabbitMQ執行機制:

1、有生產者傳送訊息,到達訊息伺服器之後,經過轉換器的繫結對應策略路由到訊息佇列,訊息伺服器再與消費者做tcp連線,一個連線中有多個通道,消費者取出訊息後,訊息從訊息佇列中消失。

 

分享到: