RabbitMQ 安装与使用

简介

RabbitMQ是一个消息代理,,它接收并转发消息。RabbitMQ 是轻量级的,易于在本地和云端部署。它支持多种消息传递协议。RabbitMQ 可以部署在分布式和联合配置中,以满足大规模、高可用性的要求。

安装

RabbitMQ 运行依赖ERLANG环境,所以首先去官网下载并安装ERLANG。

安装完成后配置环境变量 ERLANG_HOME, 然后再往 PATH 中添加 %ERLANG_HOME%\bin

RabbitMQ官网选择合适的RabbitMQ版本下载,运行下载回来的的.exe文件,按照提示操作直至安装完成。

打开命令行窗口,进入 RabbitMQ 安装目录下的sbin目录,输入命令 rabbitmq-plugins enable rabbitmq_management 启用管理界面插件,然后运行 rabbitmq-server.bat 启动服务。

打开浏览器输入http://127.0.0.1:15672访问管理界面,使用默认的用户名和密码guest/guest登录。

管理用户和权限

RabbitMQ 提供了 CLI 工具管理用户和权限,可以参考官方文档

生成复杂密码是一种常见的安全做法,通常涉及非字母数字字符。此做法完全适用于RabbitMQ用户。shell(bash、zsh等)将某些字符(!、?、&、^、"、'、*、~等)解释为控制字符。当在命令行上为rabbitmqctl add_userrabbitmqctl change_password 和其他接受密码的命令指定密码时,必须为所使用的shell适当地转义这些控制字符。如果转义不当,命令将失败,或者RabbitMQ CLI工具将从shell接收到不同的值。

bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-l] [-q] <command> [<command options>]

General options:
    -n node
    -q quiet
    -t timeout
    -l longnames

rabbitmqctl 可选参数

  • node 默认节点为"rabbit@server",其中"server"是本地主机名。在主机上名为"server.example.com",RabbitMQ Erlang节点的节点名通常是rabbit@server(除非RABBITMQ_NODENAME已设置为在代理启动时的非默认值)。hostname-s的输出通常是在"@"符号后使用的正确后缀。

  • quiet 标志选择安静输出模式。信息性消息为在静音模式有效时被抑制。

  • timeout 操作超时(秒)。仅适用于"list"命令。默认为无穷。

  • longnames 如果RabbitMQ broker 使用长节点名为erlang分发,则"longnames"应该指定选项。

用户管理

  • 查看所有用户
bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-q] list_users
  • 添加用户
bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-q] add_user <username> <password>

添加用户 test 密码设置为 test rabbitmqctl add_user "test" "test"

  • 修改用户密码
bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-q] change_password <username> <password>

修改用户 test 的密码为 test1 rabbitmqctl change_password "test" "test1"

  • 删除用户
bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-q] delete_user <username>

删除用户 test rabbitmqctl delete_user "test"

  • 验证用户
bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-q] authenticate_user <username> <password>

验证用户 test 的密码是否为 test rabbitmqctl authenticate_user "test" "test"

权限管理

操作权限分为以下几种:

  1. administrator:(管理员)可以登录控制台、查看所有信息、并对rabbitmq进行管理
  2. monToring:(监控者)可以登录控制台,查看所有信息
  3. policymaker:(策略制定者)可以登录控制台指定策略
  4. managment:(普通管理员)可以进行登录控制

对应指令中的 tag 标签。

  • 设置用户角色分配操作权限
bash 复制代码
rabbitmqctl [-n <node>] [-t <timeout>] [-q] set_user_tags <username> <tag> [...]

给 test 用户添加管理员权限 rabbitmqctl set_user_tags test administrator

  • 授予权限
bash 复制代码
# First ".*" for configure permission on every entity
# Second ".*" for write permission on every entity
# Third ".*" for read permission on every entity
rabbitmqctl [-n <node>] [-t <timeout>] [-q] set_permissions [-p <vhost>] <username> <conf> <write> <read>

为 test 用户添加资源权限(授予虚拟机根节点的所有权限) rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

  • 回收权限
bash 复制代码
# Revokes permissions in a virtual host
rabbitmqctl [-n <node>] [-t <timeout>] [-q] clear_permissions [-p vhost] <username>

取消用户 test 的权限 rabbitmqctl clear_permissions -p / "username"

更多操作可以参考 rabbitmqctl --help

端口配置

RabbitMQ 安装目录下的 etc 目录中有一个 README.txt 文件, 根据其描述可知,RabbitMQ 默认的配置文件路径为C:\Users\%USERNAME%\AppData\Roaming\RabbitMQ\rabbitmq.config, 如果找不到该文件那么我们新建一个,可以将安装目录下的 etc 目录中的 rabbitmq.config.example 文件内容拷贝过去,按需修改。

使用rabbitmqctl status 指令查看RabittMQ信息。

端口修改

15672

RabbitMQHTTP_API的端口,管理员用户才能访问,用于管理RabbitMQ,需要启动Management插件。在 rabbitmq.config 文件中找到 rabbitmq_management 属性,修改 listener 中的 port 属性。

bash 复制代码
{rabbitmq_management,
  [
  	{listener, [{port,     15672},
                {ip,       "127.0.0.1"},
                {ssl,      true}
  ]
}

5672

RabbitMQ的通讯端口,在 rabbitmq.config 文件中找到 rabbit 属性,修改 tcp_listeners 属性。

bash 复制代码
{
	rabbit,
	[{
		tcp_listeners,
		[
			{"127.0.0.1", 5672},
			{"::1", 5672}
		]
	}]
}

可能遇到的问题

1、node with name "rabbit" already running on "localhost"

描述: 启动 rabbitmq-server 时,报错 node with name "rabbit" already running on "localhost"

解决方案: tasklist | findstr erl找到对应进程, taskkill /pid 对应的pid /f将其结束, 重新启动 rabbitmq-server。

2、could not start kernel pid",application_controller

描述: 启动 rabbitmq-server 时, 报错 {"could not start kernel pid",application_controller,"error in config file \"c:/Users/admin/AppData/Roaming/RabbitMQ/rabbitmq.config\" (554): syntax error before: ']'"}

解决方案: 由于rabbitmq.conf 是JSON 格式的,所以修改配置后尤其要注意修改后的配置文件内容是否符合JSON格式。按照错误提示找到对应行,发现多了一个逗号,将其删除保存后重新启动。

相关推荐
小陈far14 小时前
RabbitMQ
分布式·rabbitmq
员宇宙17 小时前
【RabbitMQ的死信队列】
分布式·rabbitmq·ruby
winks318 小时前
使用RabbitMQ
java·rabbitmq·java-rabbitmq
Allen Bright18 小时前
RabbitMQ中的批量Confirm模式:提升消息可靠性与性能
分布式·rabbitmq
P7进阶路1 天前
Spring Boot 中 RabbitMQ 的使用
spring boot·rabbitmq·java-rabbitmq
星辰@Sea1 天前
SpringBoot整合Canal+RabbitMQ监听数据变更
spring boot·rabbitmq·java-rabbitmq
小吴-斌1 天前
Ubuntu 中安装 RabbitMQ 教程
linux·ubuntu·rabbitmq
张铁铁是个小胖子2 天前
消息中间件RabbitMQ和kafka
分布式·kafka·rabbitmq
Mr.朱鹏2 天前
操作002:HelloWorld
java·后端·spring·rabbitmq·maven·intellij-idea·java-rabbitmq
Allen Bright3 天前
RabbitMQ中的普通Confirm模式:深入解析与最佳实践
分布式·rabbitmq