之前文章介绍了队列的一些普遍概念和基本原理这是个链接,这里要详细说说我们使用的RabbitMQ的涉及到的概念
解释一下这些英文术语
启动docker的命令
systemctl restart docker
拉取Rabbitmq镜像命令
docker pull rabbitmq:management
management是rabbitmq的版本,你也可以用其他版本,随你喜欢
查看所有镜像命令
docker images
docker run -id --name=rabbitmq --hostname rabbitmq -p 5671:5671 -p 4369:4369 -p 15672:15672 -p 25672:25672 rabbitmq:management
推荐使用下面这个命令,因为上面命令不知道为何,当你想用java操作时,一直在报连接不上的错
docker run -d --restart=always -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest rabbitmq:management
5671,5672端口: AMQP 0-9-1 without and with TLS的默认端口号,AMQP前面说过是一个提供统一消息服务的应用层标准高级消息队列协议。
4369端口: empd的默认端口号,empd【Erlang Port Mapper Daemon】代表Erlang端口映射守护进程,在Erlang集群中相当于DNS作用,可以使用empd -names
命令来查看当前运行的empd中绑定注册的端口号即监听的分发端口号
15672端口: 默认用于访问RabbitMQ的web管理界面的端口号
25672端口: Erlang分发服务器端口,
其他的一些端口: 61613、61614(STOMP默认端口号,Stomp是一个简单的消息文本协议) 1883、8883(MQTT默认端口号,MQTT是一个基于TCP/IP的消息协议。两个App端的消息和发送需要中间人,即中间人RabbitMQ,而这三者之间的通信协议就是MQTT)
docker ps
当下次发现Rabbitmq的容器还存在,但是docker ps中没有Rabbitmq时,可以用命令docker restart 容器ID
来重启容器
到此,已经安装完毕,以下是验证
你可能会发现当你下一次重启rabbitmq的容器后,访问不到web界面了,这时候,不要慌,冷静的上个网
首先,使用docker stop 容器ID
让容器运行停止,然后再使用docker rm 容器ID
删除rabbitmq运行的容器
然后再使用docker run -id --name=rabbitmq --hostname rabbitmq -p 5671:5671 -p 4369:4369 -p 15672:15672 -p 25672:25672 rabbitmq:management
运行rabbitmq,这时候你就可以看到问题所在了[ps:感动啊,感动的痛苦流涕啊]
然后如果你是一个幸运儿的话,你可以看到以下报错:
这个时候容器虽然启动了,但是web界面根本访问不到
这个报错不是因为你人品不好,而是因为CentOS的内核中的ip_forward(IP转发)是默认关闭的,需要手动打开。
好了,我废话太多了,以下是解决方案
vim /etc/sysctl.conf
或者
vim /usr/lib/sysctl.d/00-system.conf
打开该配置文件后,添加一行代码
net.ipv4.ip_forward=1
systemctl restart network
查看是否修改成功
sysctl net.ipv4.ip_forward
如果你是docker启动报这个错就重启docker
systemctl restart docker
像我的情况,是重启rabbitmq的容器时报了这个错,那我就只重启了rabbitmq容器
docker restart rabbitmq容器ID
可以看到主页面主要由6个大模块组成:OverView(概览)、Connections(监控所有的连接)、Channels(信道)、Exchange(交换机)、Queues(消息队列)、Admin(管理控制台)
我们点击用户名进入权限设置
会进入到一个用户设置的页面,然后找到Permissions模块,我们设置权限
再看用户时,就会发现dean用户有了虚拟主机/
当然,如果你不想使用这个虚拟主机了,你也可以再次点击用户名进入该页面进行清除
可以看到,虽然guest我们没有进行手动绑定,但是guest和虚拟机/x还是绑定了,原因是guest默认拥有所有虚拟主机的操作权限,你可以手动清除
RabbitMQ中默认有7个交换机,就好像mysql中默认会有几张系统表一样
至此,RabbitMQ的web界面使用就结束了,剩余的几个模块需要使用代码操作,Web界面只是用于查看信息