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
  • 相关阅读:
    终于看到费德勒在法网如愿!
    o(∩_∩)o...,今天去博客园了!
    条款4:使用Conditional特性代替#if条件编译
    MSDTC无法启动的解决方法
    2009 很有意义的一天
    从现在开始,争取记录每天所学到的、所感受到的、所遇见到的点点滴滴!
    了解MOSS2007 内容类型ID(Content Type IDs)命名规则
    CreateSpecificCulture('zhcn')和new CultureInfo('zhcn')的区别
    金华大显数码科技有限公司诚聘
    使用SQL Server中按位于来表示组合状态
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10351511.html
Copyright © 2011-2022 走看看