缘由:再部署我们公司APP后台服务中,需要使用到消息队列,当时在华为云上面部署,整个机器就是一个孤岛,使用了RPM包的方式部署了后台MQ,以此记录一下。
华为云系统版本:redhat7
由于当时没有连接外网,不是使用yum源安装,使用网上直接下载的rpm进行安装。
一、下载安装包
epel-release-7-9.noarch.rpm
erlang-19.0.4-1.el7.centos.x86_64.rpm
rabbitmq-server-3.6.6-1.el7.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
二、安装
注意:如果未安装erlang则安装rabbitmq的时候会提示:erlang >= R16B-03 被 rabbitmq-server-3.6.6-1.el7.noarch 需要 socat.x86_64.0.1.7.2.2-5.el7 也是 rabbitmq-server-3.6.6-1.el7.noarch.rpm 的依赖包
三、启动服务
完成后启动服务:
service rabbitmq-server start
可以查看服务状态:
service rabbitmq-server status
rabbitmq-plugins enable rabbitmq_management
四、检查安装
rabbitmqctl -q status
{pid,28842},
{running_applications,[{rabbit,"RabbitMQ","3.6.6"},
{rabbit_common,[],"3.6.6"},
{os_mon,"CPO CXC 138 46","2.4.1"},
{mnesia,"MNESIA CXC 138 12","4.14"},
{ranch,"Socket acceptor pool for TCP protocols.", 出现即可
五、网络配置
打开15672端口
firewall-cmd –add-port=15672/tcp –permanent打开5672端口
firewall-cmd –add-port=5672/tcp –permanent
也可以直接关闭防火墙设置:(生产环境中一般还是不这样配置)
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
六、添加用户和密码
rabbitmqctl add_user 用户 密码
七、分配角色
分配角色,administrator是可以操作和guest本地用户一样的功能,当登录上rabbitmq_management之后,里面的所有功能都可以使用。
授权,队列的操作管理权限。如果不配置,那么客户端在连接消息队列时会出问题。-p是授权,/是默认的虚拟机
rabbitmqctl set_user_tags root administrator
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
八、查看列出用户
rabbitmqctl list_users
九、其它操作
查看所有队列信息
# rabbitmqctl list_queues
关闭应用
# rabbitmqctl stop_app
启动应用,和上述关闭命令配合使用,达到清空队列的目的
# rabbitmqctl start_app
清除所有队列
# rabbitmqctl reset
更多用法及参数,可以执行如下命令查看
# rabbitmqctl查看所有队列信息