RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用。
安装RabbitMQ
RabbitMQ是用Erlang语言编写的,在linux的安装过程中,需要先安装Erlang。
- 准备资源
- erlang-22.2-1.el7.x86_64.rpm (https://github.com/rabbitmq/erlang-rpm/releases)
- rabbitmq-server-3.8.1-1.el7.noarch.rpm (https://www.rabbitmq.com/install-rpm.html)
- 将资源上传到服务器
- 安装ErLang:
rpm -Uvh erlang-22.2-1.el7.x86_64.rpm --nodeps --force
- 说明:安装时不再分析包之间的依赖关系而直接安装,否则报错依赖有问题。
- 执行erl -version可以看到:Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.6
- 安装Socat:
yum -y install ocat
- 安装RabbitMQ:
rpm -ivh rabbitmq-server-3.8.1-1.el7.noarch.rpm
启动RabbitMQ
- 启动RabbitMQ
- 启动:
systemctl start rabbitmq-server
- 查看状态:
systemctl status rabbitmq-server
- 启动:
- 启动RabbitMQ Web管理控制台:
rabbitmq-plugins enable rabbitmq_management
- 将RabbitMQ文件的所有权提供给RabbitMQ用户:
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
- 创建管理用户,并授予管理员角色与权限
rabbitmqctl add_user admin password rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
- 浏览器访问
http://ip:15672
进入管理页面。
说明el6、el7
下载rpm时,文件会包括el6,el7,el8等字样:EL是Red Hat Enterprise Linux(EL)的缩写。
EL5是Red Hat 5.x,CentOS 5.x和CloudLinux 5.x的下载。
EL7是Red Hat 7.x,CentOS 7.x和CloudLinux 7.x的下载。
EL8是Red Hat 8.x,CentOS 8.x和CloudLinux 8.x的下载。
关于erlang的安装
关于erlang的安装,常见的还有有如下两种情况
- 添加
erlang solutions
源wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm yum install erlang
- 从EPEL源安装(这种方式安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本)
但是以上两个方法很慢,而且还有可能报错,笔者就是按照上述的步骤安装,erlang的版本是 5.10.4,结果有如下报错:yum install epel-release yum install erlang
error: Failed dependencies: erlang >= 21.3 is needed by rabbitmq-server-3.8.1-1.el7.noarch
常用指令
1. 服务器启动与关闭
启动 systemctl start rabbitmq-server
关闭 systemctl stop rabbitmq-server
重启 systemctl restart rabbitmq-server
查看状态 systemctl status rabbitmq-server
开机启动 systemctl enable rabbitmq-server
2. 用户管理
新增 rabbitmqctl add_user admin admin
删除 rabbitmqctl delete_user admin
修改 rabbitmqctl change_password admin admin123
清空密码 rabbitmqctl clear_password admin
验证用户名密码 rabbitmqctl authenticate_user admin verifyit
用户列表 rabbitmqctl list_users
设置角色 rabbitmqctl set_user_tags admin administrator monitoring policymaker management
设置用户权限 rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP
查询所有权限 rabbitmqctl list_permissions [-p VHostPath]
指定用户权限 rabbitmqctl list_user_permissions admin
清除用户权限 rabbitmqctl clear_permissions [-p VHostPath] admin
设置用户是管理员 rabbitmqctl set_user_tags admin administrator
3. 应用程序管理:
rabbitmqctl force_reset 无条件重新设置
rabbitmqctl reset 需要在当前rabbitmq关闭服务才能运行
rabbitmqctl shutdown 关闭rabbitmq服务节点
rabbitmqctl start_app 启动reabbitmq服务
rabbitmqctl stop 停止运行RabbitMQ的Erlang节点。
rabbitmqctl stop_app 停止rabbitmq服务
rabbitmqctl hipe_compile /tmp/rabbit-hipe/ebin 对HiPE-compile模块并将它们存储到 / tmp / rabbit-hipe / ebin目录
rabbitmqctl rotate_logs 此命令启动内部日志轮换过程
rabbitmqctl wait /var/run/rabbitmq/pid 当RabbitMQ节点启动时,此命令将返回