RabbitMQ 官网
RabbitMQ 下载 github 链接
RabbitMQ 与 Erlang/OTP 兼容性矩阵链接
RabbitMQ 版本 |
需要的 Erlang/OTP 最低版本 |
最大支持的 Erlang/OTP 版本 |
4.0.1 - 4.0.3 |
26.2 |
26.2.x |
3.13.x |
26.0 |
26.2.x |
3.12.10 - 3.12.13 |
25.0 |
26.2.x |
Erlang/OTP 官网
Erlang/OTP Windows下载链接
Erlang/OPT Centos 下载链接
本次测试安装 RabbitMQ 版本为 3.13.6。
先安装 Erlang/OTP 26.2.4 (不断下一步一下步完成安装),在安装 RabbitMQ 3.13.6 (也是不断下一步一下不完成安装)。
注意 RabbitMQ 和 Erlang 之间的版本关系
先安装 Erlang/OTP 26.2.4 源码安装,请自行下载源码先。
预先安装编译 otp 所需依赖
1
|
yum install -y gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget socat
|
解压 otp
1
|
tar -zxf otp_src_26.2.4.tar.gz
|
配置
1
2
3
4
5
|
cd otp_src_26.2.4
./configure --prefix=/usr/local/erlang
make && make install
|
添加配置环境变量,环境变量配置文件 /etc/profile
1
2
3
4
|
# 在 /etc/profile 文件末尾添加 erlang 可执行环境变量,具体路径按安装配置路径为准
ERLANG_HOME=/usr/local/erlang
PATH=$PATH:$ERLANG_HOME/bin
export $ERLANG_HOME $PATH
|
输入erl,出现版本号就说明成功。
在安装 RabbitMQ 3.13.16 二进制安装安装,下载文件 rabbitmq-server-3.13.6.tar.xz
解压配置环境变量
1
2
|
tar -Jxf rabbitmq-server-3.13.6.tar.xz
cd rabbitmq_server-3.13.6
|
把RabbitMQ添加到环境变量 /etc/profile
1
2
3
|
RABBITMQ_HOME=/usr/local/rabbitmq_server-3.13.6
PATH=$PATH:$RABBITMQ_HOME/sbin
export RABBITMQ_HOME PATH
|
输入命令行启动 rabbitmq 服务
1
2
3
|
rabbitmq-server
# 后台启动
rabbitmq-server -detached
|
关闭 rabbitmq 服务
默认 RabbitMQ 配置文件路径 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf
基础配置
1
2
3
4
5
6
|
# 这是一个注释
listeners.tcp.default = 5673
# web 管理端口
management.tcp.port = 15672
# 或者
[{rabbit, [{tcp_listeners, [5673]}]}]
|
默认 gust 仅能在本机上面登录,需要新建一个管理员账户支持远程访问。
注意:需在 RabbitMQ 启动后,新开一个 shell 窗口添加
1
2
3
|
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
|
启动一些插件
1
2
3
4
|
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_amqp1_0
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_web_stomp
|
启用功能特性
1
2
3
4
5
|
# 列出所有功能特性
rabbitmqctl list_feature_flags
# 启用所有或指定功能特性
rabbitmqctl enable_feature_flag <all | name>
|
systemed 服务文件 /usr/lib/systemd/system/rabbitmq-server.service
注意:
- 需要把 erl 放到
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
这其中一个执行目录中。
- 或者在
rabbitmq-server.service
服务文件中添加 ERL 可执行文件的路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[Unit]
Description=RabbitMQ broker
After=network.target
Wants=network.target
[Service]
# 配置 ERL 可执行目录,或者直接把 ERL 放到默认可执行目录中
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/erlang/bin"
Type=forking
User=root
Group=root
NotifyAccess=all
TimeoutStartSec=600
Restart=on-failure
RestartSec=10
WorkingDirectory=/usr/local/rabbitmq
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server -detached
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl stop
# See rabbitmq/rabbitmq-server-release#51
SuccessExitStatus=69
[Install]
WantedBy=multi-user.target
|
查看 RabbitMQ 安装后状态
1
|
systemctl status rabbitmq-server
|
启动 RabbitMQ
1
|
systemctl start rabbitmq-server
|
1
|
rabbitmq-plugins enable rabbitmq_management
|
默认端口 4369、5672、15672、25672
默认登录用户名和密码都是 gust ,注意仅能通过本机登录访问。
rabbitmqctl add_user <username> <password>
1
2
|
# 新增用户名为 rabbitmq 密码为 rabbitmq 的账号
rabbitmqctl add_user rabbitmq rabbitmq
|
rabbitmqctl set_user_tags <username> tag tag2 ...
1
2
3
|
# tag 包含(gust, administrator,monitoring,policymaker,management)
# 设置 rabbitmq 账号有管理员权限
rabbitmqctl set_user_tags rabbitmq administrator
|
1
2
3
4
5
6
|
# 删除指定用户
rabbitmqctl delete_user <username>
# 修改指定用户密码
rabbitmqctl change_password <username> <newpassword>
# 清除指定用户密码
rabbitmqctl clear_password <username>
|
1
2
3
4
5
6
|
# 添加 vhost
rabbitmqctl add_vhost <vhostpath>
# 删除指定 vhost
rabbitmqctl delete_vhost <vhostpath>
# 列出 vhost
rabbitmqctl list_vhosts [<vhostinfoitem> ...]
|
1
2
3
4
|
# 设置指定用户对指定 vhost 有所有全选
rabbitmqctl set_permissions -p "/" <username> '.*' '.*' '.*'
# 列出用户权限
rabbitmqctl list_user_permissions username
|
1
2
3
4
5
|
# 针对一个 vhosts
rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl clear_permissions [-p <vhostpath>] <username>
rabbitmqctl list_permissions [-p <vhostpath>]
rabbitmqctl list_user_permissions <username>
|
RabbitMQ 延迟插件 github 下载链接
注意: RabbitMQ 版本若为 3.13.x
版本那么消息延迟插件也应该下载 3.13.x
版本的。
RabbitMQ 延迟消息队列插件下载链接 v3.13.x 版本
把消息延迟插件包上传到 RabbitMQ
安装目录 plugins
目录中。
查看插件列表
1
2
3
|
rabbitmq-plugins list
# 查询插件是否包含延迟消息队列插件
rabbitmq-plugins list | grep delayed_message_exchange
|
启用消息延迟队列插件
1
|
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
|
当执行命令包如下错误时
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Error: unable to perform an operation on node 'rabbit@DESKTOP-8RAHTPQ'. Please see diagnostics information and suggestions below.
Most common reasons for this are:
* Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
* CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server) * Target node is not running
...
Current node details:
* node name: 'rabbitmqcli-902-rabbit@DESKTOP-8RAHTPQ'
* effective user's home directory: c:/Users/Administrator
* Erlang cookie hash: JeehOyUyOJpBreAzs8thTA==
|
解决方法:复制 C:\Windows\System32\config\systemprofile\.erlang.cookie
文件到上面错误显示的用户目录 c:/Users/Administrator
下替换此文件。