RabbitMQ安装和简单配置说明

RabbitMQ安装|RabbitMQ简单配置说明

RabbitMQ

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 服务

1
rabbitmqctl stop

默认 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
1
rabbitmqctl list_users

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 下替换此文件。

相关内容