Java消息隊列


作用:提升系統異步通信,擴展解耦能力。

系統發送消息到消息代理接管,消息代理保證消息傳送到指定目的地。

主要的兩種形式:

  1.隊列(Queue):點對點通信

  每一條消息只有一個接收者獲取,當某條消息被一個接收者獲取后,該消息將被移出隊列,其余接收者無法獲取該消息。

 

  2.發布(Publish)/ 訂閱(Subscribe)

  多個接收者監聽(訂閱)了這個隊列,隊列中的新消息將到達每一個接收者,訂閱了這個隊列的接收者將同時收到消息。

 

  JMS(Java消息服務) AMQP(高級消息隊列協議)
定義 Java API 網絡線級協議
跨語言
跨平台
消息模型

1.點對點

2.發布/訂閱

1.direct exchange(點對點)

2.fanout exchange(發布/訂閱)

3.topic exchange(發布/訂閱)

4.headers exchange(發布/訂閱)

5.system exchange(發布/訂閱)

本質上講,后四種都屬於發布/訂閱,僅在

路由機制上作了更加詳細的區分

支持消息類型

1.TextMessage

2.MapMessage

3.BytesMessage

4.StreamMessage

5.ObjectMessage

6.Message(只有消息頭和屬性)

byte[]

當實際應用時,有復雜的消息可以將消息序列化

后發送。

綜合評價

JMS定義了Java API層面的標准,在Java

體系中,多個Client均可以通過JMS進行

交互,不需要應用修改代碼,但其對跨平台

的支持較差

AMQP定義了wire-level層的協議標准,天然具有跨語言、

跨平台的特性。

Sping的支持

Spring-jms提供了對JMS的支持
Spring-rabbit提供了對AMQP的支持
需要ConnectionFactory的實現類來連接消息代理
提供JmsTemplate、RabbitTemplate來發送消息
@JmsListener(JMS)、@RabbitListener(AMQP)注解在方法上監聽消息代理發布的消息
@EnableJms、@EnableRabbit開啟支持

SpringBoot的支持

  starter(啟動器) AutoConfiguration(自動配置類)
JMS

spring-boot-starter-activemq

spring-boot-starter-artemis

JmsAutoConfiguration
AMQP spring-boot-starter-amqp RabbitAutoConfiguration


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM