消息队列的产品还是蛮多的,比如 ActiveMQ RabbitMQ 还有阿里的 RocketMQ…… 那这玩意是干哈的?有什么作用呢?趁这个机会我相要深入理解下消息队列 => Message queue

消息队列是干哈的?

主要是为了限流削峰

场景:高并发用户注册。

没有MQ,当高并发请求读写数据库时,系统会创建很多数据库连接。导致连接异常,触发 too many connections,导致业务故障。

使用MQ,并发请求会先写入队列中,系统从MQ中读取消息,依照逻辑逐个处理。

MQ的工作流程

MQ由3个对象组成:生产者、队列、消费者。

我们以 RabbitMQ 为例,常用的有两种工作模式。

简单模式

生产者负责生产消息,将消息发送到队列中,消费者监听队列,队列有消息就进行消费。

工作模式

工作模式与简单模式相同,区别在于可以添加多个消费者。默认的是轮询模式分发消息。有个问题出现了,有的消费者处理的快有的处理的慢,处理的快我们就希望他多处理一点。这个时候怎么办呢?

RabbitMQ 有消息确认机制。默认我们给他的是自动确认,但是我们可以自己设置为手动确认。这样就解决了这个问题。

RabbitMQ安装

使用 docker 安装 RabbitMQ,如果需要web界面,应 pull tagrabbitmq:3-management 的安装镜像。

……未完待续