消息队列的产品还是蛮多的,比如
ActiveMQ
RabbitMQ
还有阿里的RocketMQ
…… 那这玩意是干哈的?有什么作用呢?趁这个机会我相要深入理解下消息队列 =>Message queue
消息队列是干哈的?
主要是为了限流削峰
场景:高并发用户注册。
没有MQ,当高并发请求读写数据库时,系统会创建很多数据库连接。导致连接异常,触发 too many connections
,导致业务故障。
使用MQ,并发请求会先写入队列中,系统从MQ中读取消息,依照逻辑逐个处理。
MQ的工作流程
MQ由3个对象组成:生产者、队列、消费者。
我们以 RabbitMQ
为例,常用的有两种工作模式。
简单模式
生产者负责生产消息,将消息发送到队列中,消费者监听队列,队列有消息就进行消费。
工作模式
工作模式与简单模式相同,区别在于可以添加多个消费者。默认的是轮询模式分发消息。有个问题出现了,有的消费者处理的快有的处理的慢,处理的快我们就希望他多处理一点。这个时候怎么办呢?
RabbitMQ
有消息确认机制。默认我们给他的是自动确认,但是我们可以自己设置为手动确认。这样就解决了这个问题。
RabbitMQ安装
使用 docker
安装 RabbitMQ
,如果需要web界面,应 pull
tag
为 rabbitmq:3-management
的安装镜像。
……未完待续