分布式中的消息中间件

一. 引入

1. 异步处理

  • 在这里插入图片描述

2.应用解耦

  • 在这里插入图片描述

3.流量控制

  • 在这里插入图片描述

二. 概述

  • 大多数应用中,可通过消息服务中间件来提升系统异步通信,扩展解耦能力

  • 消息服务中两个重要概念: 消息代理(message broker)目的地(destination),当消息发送者发送消息后,将由消息代理接管,消息代理保证消息传递到指定

  • 消息队列主要有两种形式的目的地

    • 队列(queue) : 点对点消息通信(point to point)
    • 主题(topic) : 发布(publish)/订阅(subscribe) 消息通信
  • 点对点式:

    • 消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移出队列
    • 消息只有唯一的发送者和接收者,但并不是说只能有一个接收者(可以有多个接收者,但是消息最终只会被一个接收者接收)
  • 发布订阅式:

    • 发送者(发布者) 发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,所有在消息到达前订阅的订阅者都能收到消息
  • JMS(Java Message Service) Java消息服务:

    • 基于JVM消息代理的规范,ActiveMQ,HornetMQ是JMS实现的
  • AMQP(Advanced Message Queuing Protocol):

    • 高级消息队列协议, 也是一个消息代理的规范,兼容JMS
    • RabbitMQ是AMQP的实现
  • JMS(Java Message Service)AMQP(Advanced Message Queuing Protocol)
    定义Java api网络线级协议
    跨语言
    垮平台
    Model提供两种消息模型:
    (1).Peer-2-Peer
    (2).Pub/Sub
    提供五种消息模型:
    (1).direct exchange
    (2).fanout exchange
    (3).topic change
    (4).headers exchange
    (5).system exchange
    本质来讲,后四种和JMS的pub/sub模型没什么太大区别,仅是在路由机制上做了更详细的划分
    支持消息类型多种消息类型:
    TextMessage
    MapMessage
    BytesMessage
    StreamMessage
    ObjectMessage
    Message(只有消息头和属性)
    byte[]
    当实际应用时,有复杂的消息,可以将消息序列化后发送
    综合评价JMS定义了JAVA API层面的标准,在JAVA体系中,多个Client均可以通过JMS进行交互,
    不需要应用修改代码,但是其对跨平台的支持较差
    AMQP定义了wire-level层的协议标准,天然具有跨平台,跨语言特性
  • spring支持

    • spring-jms提供对JMS的支持
    • spring-rabbit提供对AMQP的支持
    • 需要ConnectionFactory的实现来连接消息代理
    • 提供JmsTemplate,RabbitTemplate来发送消息
    • @JmsListener(JMS),@RabbitListener(AMQP)注解在方法上监听消息代理发布消息
    • @EnableJms,@EnableRabbit开启支持
  • springboot自动配置

    • JmsAutoConfiguration
    • RabbitAutoConfiguration
  • MQ产品

    • ActiveMQ,RabbitMQ,RocketMQ,Kafka
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

climb.xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值