消息中间件

消息中间件

1. 什么是消息中间件

​ MQ 全称为 Message Queue,消息队列是应用程序和应用程序之间的通信方法。

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

1.1 应用场景

  • 任务异步处理

    将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。

  • 应用程序解耦合

    MQ 相当于一个中介,生产方通过 MQ 与消费方交互,它将应用程序进行解耦合。

  • 削峰填谷

    在并发量高时,产生的交易无法正常处理,导致系统宕机,采用MQ,消息被 MQ 保存起来,系统再按照正常数据量处理,高峰就被“削”掉了,从而避免这种情况。
    在这里插入图片描述

1.2 JMS和AMQP

​ MQ 是消息通信的模型;实现 MQ 的大致有两种主流方式:AMQP、JMS。

1.2.1 JMS

​ JMS 即 Java 消息服务(JavaMessage Service)应用程序接口,是一个Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

1.2.2 AMQP

​ AMQP 是一种协议,更准确的说是一种 binary wire-level protocol(链接协议)。这是其和 JMS 的本质差别,AMQP 不从 API 层进行限定,而是直接定义网络交换的数据格式。

1.2.3. JMS与AMQP 区别
  • JMS 是定义了统一的接口,来对消息操作进行统一;AMQP 是通过规定协议来统一数据交互的格式。
  • JMS限定了必须使用 Java 语言;AMQP 只是协议,不规定实现方式,因此是跨语言的。
  • JMS规定了两种消息模式;而 AMQP 的消息模式更加丰富。

1.3 消息队列产品

  • ActiveMQ:基于 JMS;
  • ZeroMQ:基于 C 语言开发;
  • RabbitMQ:基于 AMQP 协议,erlang 语言开发,稳定性好;
  • RocketMQ:基于 JMS,阿里巴巴产品;
  • RocketMQ:基于 JMS,阿里巴巴产品;
  • Kafka:类似 MQ 的产品;分布式消息系统,高吞吐量。

RabbitMQ VS kafka 适用场景比较

场景RabbitMQkafka
消息的顺序线程出错,消息重新入队,造成乱序消费者pull模式
消息的匹配通配符-
消息的超时TTL+死信队列+延迟队列-
消息的保持消息被取出来就被删除,不能重复消费offset模型
消息的错误处理死信队列+跳过处理不能跳过,只能停止
消息的吞吐量每秒几万条消息每秒几十万条
其他配置复杂、维护复杂(zookeeper+jvm)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值