RabbitMQ是什么?
RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件,能够实现异步消息处理。
使用MQ异步通信流程?
使用异步通信优势?
-
吞吐量提升:无需等待订阅者处理完成,响应更快速
-
故障隔离:服务没有直接调用,不存在级联失败问题
-
调用间没有阻塞,不会造成无效的资源占用
-
耦合度极低,每个服务都可以灵活插拔,可替换
-
流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件
使用MQ的劣势?
-
不需要返回值: A要和B进行通信,A不需要B的返回值;
-
允许短暂数据不一致
在Linux上安装RabbitMQ
1.在线拉取镜像rabbitmq(本人使用的是3.9-management版本带控制台的)
docker pull rabbitmq:3.9-management
2.创建容器
docker run --name rabbit -p 15672:15672 -p 5672:5672 -d rabbitmq:3.9-management
--name:指定容器名称(可以随意起)
-p:端口映射,管理控制台15672,和RabbitMQ通信5672
-d:后端运行
-v:目录挂载(可选项)
-e:配置rabbitmq的用户和密码(可选项),不配置默认的都guest
-e RABBITMQ_DEFAULT_USER=itcast
-e RABBITMQ_DEFAULT_PASS=123321
3.进入管理控制台
体系架构
虚拟主机(virtual hosts)
类似MySQL中数据库,对数据进行隔离。
安装好RabbitMQ后自带一个虚拟主机,名字是/
交换机(重要)
在RabbitMQ中生产者发送的所有消息都必须先发送交换机,再由交换机按照规则把消息路由转发到指定消息队列;
安装好RabbitMQ后自带一些交换机,其中有一个交换机默认交换机
消息队列(重要)
存储消息
工作流程?
RabbitMQ的工作模式
官方网址:RabbitMQ Tutorials — RabbitMQ
简单工作模式
工作队列模式
发布订阅模式
路由模式
通配符模式