【MQ】MQ--消息中间件

消息中间件

MQ 全称为Message Queue,是在消息的传输过程中保存消息的容器。多用于分布式系统
之间进行通信。
在这里插入图片描述

1 MQ 三大特点:
  1. 本身是一个服务,生产者和消费者都需要连接该服务
  2. 底层采用队列(Queue)的数据结构实现先进先出
  3. 结构是一个Pub、Sub 模型(发布、订阅模型)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
2 优点

在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理
的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量

3 作用
  1. 应用程序解耦合,提升容错性和可维护性。
    2 削峰填谷,可以提高系统稳定性。
4 应用场景

使用MQ满足条件:

  • 产者不需要从消费者处获得反馈。引入消息队列之前的直接调用,其接口的返回值应该为空,
    这才让明明下层的动作还没做,上层却当成动作做完了继续往后走,即所谓异步成为了可能。
  • 容许短暂的不一致性。
  • 确实是用了有效果。即解耦、提速、削峰这些方面的收益,超过加入MQ,管理MQ 这些成本。
  1. 订单系统(退货的时候要调用:库存系统、支付系统、通知系统,非同步的哦)
  2. 银行转账(转账也不是立即到账,异步)
  3. 理财业务(提取现金,并不是立即到账,异步)
5. AMQP 和JMS

AMQP
AMQP 是一种协议,更准确的说是一种binary wire-level protocol(链接协议)。
这是其和JMS 的本质差别,AMQP 不从API 层进行限定,而是直接定义网络交换的数据格
式。AMQP 是一种跨语言、跨平台的协议,工作在应用层。RabbitMQ 是AMQP 协议的实现。
JMS
JMS 即Java 消息服务(JavaMessage Service)应用程序接口,是一个Java 平台中
关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,
进行异步通信。JMS 是一种与厂商无关的API,用来访问消息收发服务(消息中间件),类
似于java 中的Jdbc,是一套接口。MQ 的实现可以基于JMS,也可以基于其他规范或标
准,其中ActiveMQ 就是基于JMS 规范实现的消息队列。rabbitmq 是amqp 协议的,默
认不支持JMS 的api 接口,不过你只要用spring 的template,就可以了,它可帮你适配。

6 AMQP(Advanced Message Queue Protocol) 与JMS(JavaMessage Service) 区别
  • binary wire-level protocol(链接协议)
  • JMS 是定义了统一的接口,来对消息操作进行统一;AMQP 是通过规定协议来统一数据交
    互的格式
  • JMS 限定了必须使用Java 语言;AMQP 只是协议,不规定实现方式,因此是跨语言的。
  • JMS 规定了两种消息模式;而AMQP 的消息模式更加丰富
6 消息队列产品
  • ActiveMQ:基于JMS
  • ZeroMQ:基于C 语言开发
  • RabbitMQ:基于AMQP 协议,erlang 语言开发,稳定性好
  • RocketMQ:基于JMS,阿里巴巴产品
  • Kafka:类似MQ 的产品;分布式消息系统,高吞吐量
    在这里插入图片描述
    (- - 笔记整理)
    收藏:RabbitMQ:主流MQ对比,为什么选择RabbitMQ(一)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值