1、消息队列概述

消息队列(Message Queue): 是一种应用程序对应用程序通信的方式、生产者不断向消息队列中生产消息、消费者不断从队列中获取消息、生产者不是直接和消费者通信。

2、消息队列的实现方式

MQ是消息通信的模型、现在实现MQ有二种主流方式:AMQP、JMS

AMQP:(advanced message queuing protocol)、提供统一消息服务的应用层标准高级消息队列协议、是应用层协议的一个开放标准、不受客户端/中间件不同产品、不同开发语言等条件限制、

常用产品:Erlang中实现有RabbitMQ

JMS:(java messageService): JMS是由sun公司早期提出的消息标准、为java应用提供统一的消息操作、只限java语言使用。

常用产品:RocketMQ 、ActiveMQ

其它:Kafka:分布式消息系统,高吞吐量(由Scala和Java编写)

3、消息队列的作用(为什么要使用消息队列)

3.1、解耦:模块间通信消息发送和接收都通过MQ、

3.2、异步:(当用户执行某一操作时、系统A会立马响应给用户、当用户感觉很快、只是请求还在MQ里等待操作)加快响应速度

消息队列 (MQ)_应用程序

3.3、削峰: 削峰、限流(前端发来5000个请求、但mysql只能消化2000请求、其它3000会存在MQ里、慢慢消化)

ActiveMQ:万级、ms级、低概率丢失数据、现使用的人较少

RabbitMQ:万级、微妙级、延时最低,性能好、erlang开发、社区活跃

RocketMQ:10万级、ms级、分布式架构、阿里出品、

Kafka: 10万级、最大的优点就是高吞吐量、适用大数据

 

4、消息队列的缺点

MQ挂掉:微服务或模块间无法通信。

MQ丢失消息:

MQ消息乱序:

模块响应给MQ的消息的一致性问题: