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
posted @ 2019-02-04 10:37  SpringCore  阅读(1139)  评论(0编辑  收藏  举报