RabbitMQ 官网地址:Messaging that just works — RabbitMQ
下载安装官方参考地址:Downloading and Installing RabbitMQ — RabbitMQ
官网使用教程(开发):RabbitMQ Tutorials — RabbitMQ
与 Erlang 版本对应关系参考地址:RabbitMQ Erlang Version Requirements — RabbitMQ
版本支持的时间参考地址:Release Series — RabbitMQ
首选要确认你需要安装的版本:rabbitmq 与 erlang 版本对应关系
我选择的是3.10.0,要求 erlang 版本在23.2以上
演示环境:CentOS 7.9 有外网权限 RPM 包方式安装
一些高版本好像没有 el7 的包了,我就直接用的最后一个版本支持 el7 的版本来演示,不然就只有源码编译安装了,那玩意感觉很费劲,麻烦
准备基础环境
### 基础设置
systemctl disable firewalld NetworkManager --now
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
hostnamectl set-hostname node1
### 重启
reboot
设置国内 yum 源
mkdir /etc/yum.repos.d.bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache
设置 rabbitmq 相关源
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
### 安装服务
yum install erlang-23.3.4.11-1.el7.x86_64 rabbitmq-server-3.10.0-1.el7.noarch wget vim -y
启动服务
##启动服务并加入开机自启
systemctl enable rabbitmq-server --now
##状态查看
systemctl status rabbitmq-server
##端口监听查看5672
ss -lnt
### 开启web端界面管理,监听15672端口
rabbitmq-plugins enable rabbitmq_management
### 创建一个访问账号
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin management
### 重启服务生效,访问验证,端口15672
systemctl restart rabbitmq-server
我好像账号必须给【management】权限,连【administartor】都进不去这个界面,不知道为啥
## 停止运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务应用
rabbitmqctl stop
## 停止 RabbitMQ 服务应用,但是 Erlang 虚拟机还是处于运行状态
rabbitmqctl stop_app
## 启动运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务应用
rabbitmqctl start_app
## 将 RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如已配置的用户、vhost 等,以及删除所有的持久化消息。执行rabbitmqctl reset 命令前必须停止 RabbitMQ 应用(比如先执行 rabbitmqctl stop_app)
rabbitmqctl reset
## 强制重置还原到最初状态:不论当前管理数据库的状态和集群配置是什么,都会无条件地重置节点
rabbitmqctl force_reset
单个用户可以跨vhost进行授权,服务安装后默认用户是 guest
用户的角色分类:
- none:无任何角色。新创建的用户的角色默认为 none
- management:可以访问 Web 管理页面
- policymaker:包含 management 的所有权限,并且可以管理策略(Policy)和参数(Parameter)
- monitoring:包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息
- administartor:包含 monitoring 的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等,administator 代表了最高的权限
### 创建一个用户,配置密码
rabbitmqctl add_user admin admin
### 改变用户的密码
rabbitmqctl change_password admin admin@123
### 清除密码
rabbitmqctl clear_password admin
### 验证账号的密码,通过则 Success
rabbitmqctl authenticate_user admin admin@123
### 删除用户
rabbitmqctl delete_user admin
### 查看用户列表
rabbitmqctl list_users
### 设置用户的角色
rabbitmqctl set_user_tags admin administartor
用户一般会与 vhost 绑定
### 默认的vhost /
### 创建新的vhost
rabbitmqctl add_vhost vhost_demo1
### 查看当前的vhost
rabbitmqctl list_vhosts name
rabbitmqctl list_vhosts tracing
### 删除一个vhost
rabbitmqctl delete_vhost vhost_demo1
### 授权命令:root用户可以访问虚拟主机vhost1所有资源,对于资源是可配置、可读写的权限,正则支持
rabbitmqctl set_permissions -p vhost_demo1 root ".*" ".*" ".*"
### 清除权限
rabbitmqctl clear_permissions -p vhost_demo1 root
### 查看权限
#对vhost
rabbitmqctl list_permissions -p /
#对用户
rabbitmqctl list_user_permissions guest
### 开启web端界面管理,监听15672端口
rabbitmq-plugins enable rabbitmq_management
### 查看当前插件使用情况
rabbitmq-plugins list
### 重启服务生效,访问验证
systemctl restart rabbitmq-server
### 关闭界面
rabbitmq-plugins disable rabbitmq_management
rabbitmqctl list_queues [-p vhost] [队列信息选项]
关于队列信息选项
rabbitmqctl list_exchanges [-p vhost] [交换器信息选项]
关于交换器信息选项
rabbitmqctl list_bindings [-p vhost] [绑定信息选项]
关于绑定关系信息可选
source_name:绑定中消息来源的名称
source_kind:绑定中消息来源的类别
destination_name:绑定中消息目的地的名称
destination_kind:绑定中消息目的地的种类
routing_key:绑定的路由键
arguments:绑定的参数
rabbitmqctl list_connections [-p vhost] [连接信息选项]
可用的连接信息选项
rabbitmqctl list_channels [可选信道连接信息选项]
可选的信道连接选项
pid:与连接相关的 Erlang 进程 ID
connection:信道所属连接的 Erlang 进程 ID
name:信道的名称
number:信道的序号
user:与信道相关的用户名称
vhost:与信道相关的 vhost
transactional:信道是否处于事务模式
confirm:信道是否处于 publisher confirm 模式
consumer_count:信道中的消费者的个数
messages_unacknowledged:已投递但是还未被 ack 的消息个数
messages_uncommitted:已接收但是还未提交事务的消息个数
acks_uncommitted:已 ack 收到但是还未提交事务的消息个数
messages_unconfirmed:已发送但是还未确认的消息个数。如果信道不处于publisher confirm 模式下,则此值为 0
perfetch_count:新消费者的 Qos 个数限制。0 表示无上限
global_prefetch_count:整个信道的 Qos 个数限制。0 表示无上限
rabbitmqctl list_consumers [-p vhost]
rabbitmqctl status
rabbitmqctl node_health_check
rabbitmqctl environment
rabbitmqctl report > file.txt
可以直接在 web 端操作好像,不知道能不能直接在命令行创建