zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    「JSOI2015」套娃
    「JSOI2015」非诚勿扰
    「JSOI2015」送礼物
    「JSOI2015」子集选取
    「JSOI2015」salesman
    「JSOI2015」字符串树
    [2]树的DFS序
    hdu 6058 Kanade's sum
    UVALive 6907 Body Building
    CF617/E XOR and Favorite Number
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10351511.html
Copyright © 2011-2022 走看看