目录
1、RabbitMQ的安装
- 官网链接:rabbitmq官网 (官网很详细,也可以在官网学习啦~)
- 基础入门:
- 自主学习:
- 最新版本:
- 安装我们是采取docker安装~
-
安装命令:
docker run -d --name mq \ --restart=always \ -e RABBITMQ_DEFAULT_USER=root \ -e RABBITMQ_DEFAULT_PASS=1111 \ -v ~/env/rabbitmq/lib:/var/lib/rabbitmq \ -v ~/env/rabbitmq/log:/var/log/rabbitmq \ -p 15672:15672 \ -p 5672:5672 \ rabbitmq:3.8-management
-
命令解释:
- docker run :创建并运行容器 ; -d:后台运行容器 ;
- name:给容器起的名字; restart = always容器一直运行着
- -e:是设置环境变量;第一个-e后面是设置了一个用户名root;第二个-e后面是设置了一个密码1111
- -v:数据卷挂载;就是把rabbitmq下的目录映射到本机目录下的某个问题;
- -p:端口映射;15672:控制台端口 - 图形化界面;5672:消息通信的端口
- 最后一行是镜像名及版本号 (docker听不懂的可以去看我的docker专栏~)
-
检查是否启动成功:
- docker ps:
- 浏览器访问:
- 上述使用你命令中设置的用户名和密码进行登录就可以了~ 登陆成功后的页面:
-
图形化界面解释:
- 总览:就是大致的一些基本情况,后面遇到了在解释(其实很多字面意思大家都能理解什么意思)
- 连接:发消息的人和收消息的人都是需要和rabbitmq建立连接的,在这里面进行连接操作
- 通道:发消息使用的通道(例如你妈打电话叫你回家吃饭,这个手机就是一个通道)
- 交换机、队列:文章下面会有解释
- 管理员:就是一些用户管理相关的一些操作~
-
2、RabbitMQ基本介绍
RabbitMQ的整体架构及核心概念:
- publisher:消息发送者
- consumer:消息的消费者
- queue:队列、存储消息
- exchange:交换机,负责路由消息
- virtual-host:虚拟主机,起到数据隔离的作用
结合图来理解:
上图的解释:
- 消息发送者不是直接把消息塞到队列中,而是先把消息发到交换机,由交换机把消息路由到队列中;
- 由上图可以发现交换机可以只路由给一个队列,也可以路由给所有队列;
- 消费者监听队列,就可以拿到消息了~
- RabbitMQ的服务端(消息代理)就包括了交换机和队列两部分 ~
- 虚拟主机怎么理解:RabbitMQ的并发量很高,就可以支持多个项目都在同一套RabbitMQ服务下,但这么多项目中的交换机和队列就可能会有冲突,为了解决这种冲突就提出了数据隔离,类似于一个数据库服务器下有多个Database,各个Database间是数据隔离的~
3、简单案例
需求:在RabbitMQ的控制台(浏览器上的图形化界面)完成以下操作:
- 新建队列hello.q1和hello.q2
- 向默认的amp.fanout交换机发送一条消息
- 查看消息是否到达hello.q1和hello.q2
步骤一:新建队列hello.q1和hello.q2
步骤二:向默认的amp.fanout交换机发送一条消息
报错了:
报错原因:消息发送了,但是没有路由~ 回顾我们前面说的,消息发送者把消息发给交换机,交换机把消息路由到队列中,所以报错就是我们没有配置这个路由呢~
解决:
然后我们再去发送消息,绑定了的队列就可以收到消息了,如下:
小结:
- 交换机和队列绑定后才可以发消息,交换机不能存储消息,只能路由和转发消息
4、数据隔离
4.1、添加虚拟主机
前面提到了虚拟主机(类似于数据库中的Database),如何添加虚拟主机?操作如下: