Windows 系统中,RabbitMQ 管理工具安装 C#使用
一、下载
安装包可从 RabbitMQ 官网 下载
Installing RabbitMQ | RabbitMQ

大家可以根据自己系统环境选择指定安装
二、安装并启用 RabbitMQ 管理插件
管理工具是 RabbitMQ 的内置插件,无需额外下载,只需通过命令启用。
步骤 1:启动 RabbitMQ 服务
- 按下
Win + R,输入services.msc打开服务管理器。 - 找到 RabbitMQ 服务,确保其状态为 正在运行(若未运行,右键点击「启动」)。
步骤 2:启用管理插件
-
以 管理员身份 打开 PowerShell 或 命令提示符(CMD):
- 右键点击「开始」→ 选择「Windows PowerShell (管理员)」。
-
执行以下命令启用管理插件:
powershell
rabbitmq-plugins.bat enable rabbitmq_management成功启用后会显示类似信息:
plaintext
Enabling plugins on node rabbit@DESKTOP-XXX: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@DESKTOP-XXX... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch -
(可选)若服务未自动重启,手动重启 RabbitMQ 服务:
powershell
net stop RabbitMQ && net start RabbitMQ
三、访问管理界面
管理工具默认通过 15672 端口 提供 Web 服务。
-
打开浏览器,访问本地地址:
plaintext
http://localhost:15672 -
登录验证:
- 默认账号:
guest - 默认密码:
guest⚠️ 注意:默认账号 仅允许本地访问(localhost或127.0.0.1),若需从其他机器访问,必须创建新用户。
- 默认账号:
四、配置远程访问用户(可选)
若需要从同一局域网的其他电脑访问管理界面,需创建具有管理员权限的用户。
通过命令行创建用户
在管理员 PowerShell 中执行以下命令:
-
创建用户(例如:用户
admin,密码Admin@123):powershell
rabbitmqctl.bat add_user admin Admin@123 -
设置用户角色为管理员(
administrator拥有最高权限):powershell
rabbitmqctl.bat set_user_tags admin administrator -
授予用户访问所有虚拟主机的权限:
powershell
rabbitmqctl.bat set_permissions -p / admin ".*" ".*" ".*"- 权限说明:
".*"表示允许配置(configure)、写入(write)、读取(read)所有资源。
- 权限说明:
-
验证用户创建结果:
powershell
rabbitmqctl.bat list_users输出应包含
admin用户及administrator标签。
通过管理界面创建用户
- 用默认账号
guest登录http://localhost:15672。 - 点击顶部 Admin 标签,在 Add a user 区域填写:
- Username:自定义用户名(如
admin) - Password:自定义密码(如
Admin@123) - Tags:选择
administrator(下拉框中勾选)
- Username:自定义用户名(如
- 点击 Add user 完成创建。
- 点击新创建的用户名,在 Permissions 区域:
- Virtual Host 选择
/(默认虚拟主机) - Configure regexp、Write regexp、Read regexp 均填写
.* - 点击 Set permission 授予权限。
- Virtual Host 选择
五、管理界面核心功能使用
登录后,界面包含以下核心标签页,操作与 Linux 环境一致:
1. Overview(概览)
- 显示服务器状态:节点信息、内存 / 磁盘使用量、消息总数、连接数等。
- 可查看消息生产 / 消费速率图表。
2. Connections(连接)
- 查看所有客户端连接(IP、端口、状态等),可手动关闭异常连接(点击 Close)。
3. Channels(信道)
- 显示基于连接的信道信息,包括未确认消息数、消息确认模式等。
4. Exchanges(交换机)
- 创建交换机:点击 Add a new exchange,输入名称、选择类型(如
direct、topic)、设置是否持久化(Durable)。 - 绑定队列:在交换机详情页,通过 Bindings 区域绑定队列(需指定路由键 Routing key)。
5. Queues(队列)
- 创建队列:点击 Add a new queue,输入名称、设置是否持久化(Durable)等参数。
- 发送 / 接收消息:
- 发送:在队列详情页的 Publish message 区域填写消息内容,点击 Publish message。
- 接收:在 Get messages 区域点击 Get Message(s),可查看队列中的消息(可选是否删除消息)。
6. Admin(用户管理)
- 管理用户、虚拟主机、权限,支持修改用户密码、删除用户等操作。
7. Policies(策略)
- 配置队列 / 交换机的策略(如消息过期时间、死信队列),例如设置队列消息 30 秒过期:
- Name:
expire-30s - Pattern:
^my-queue$(匹配队列名) - Definition:
{"message-ttl": 30000}
- Name:
六、常见问题解决
-
无法访问 15672 端口:
- 检查 RabbitMQ 服务是否启动(
services.msc中确认)。 - 检查防火墙是否允许 15672 端口(可暂时关闭防火墙测试)。
- 检查 RabbitMQ 服务是否启动(
-
远程访问被拒绝:
- 确保已创建非
guest用户并授予权限。 - 远程访问地址需用服务器 IP(如
http://192.168.1.100:15672),而非localhost。
- 确保已创建非
-
插件启用失败:
- 检查 Erlang 和 RabbitMQ 版本是否兼容。
- 以管理员身份运行命令行工具。
七、注意事项
- 生产环境中,建议修改默认端口
15672并限制访问 IP(通过防火墙配置)。 - 避免使用弱密码,定期更新用户密码。
- 管理界面的「Get messages」操作会消费队列消息,生产环境慎用,建议通过客户端监控工具(如 Prometheus + Grafana)替代。
通过以上步骤,即可在 Windows 系统中完成 RabbitMQ 管理工具的安装、配置,并通过 Web 界面直观管理消息队列资源。
八、C# RabbitMQ 使用
💻 C# 客户端 (RabbitMQ.Client) 的使用
在C#项目中使用RabbitMQ,主要通过 RabbitMQ.Client NuGet包。
建立连接
使用 ConnectionFactory 来配置连接参数 :
csharp
using RabbitMQ.Client;
var factory = new ConnectionFactory()
{
HostName = "localhost", // RabbitMQ服务器地址 :cite[2]
Port = 5672, // 默认AMQP端口 :cite[4]
UserName = "guest", // 用户名 :cite[2]
Password = "guest", // 密码 :cite[2]
VirtualHost = "/", // 虚拟主机 :cite[4]
// 其他可选配置,如心跳、自动恢复等 :cite[4]
};
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
// 后续使用 channel 进行队列声明、发送/接收消息等操作 :cite[2]
}
发送消息 (Producer)
下面的代码演示了如何发送一条持久化的消息到指定队列:
csharp
// 声明一个队列 (如果不存在则创建)
channel.QueueDeclare(queue: "hello",
durable: true, // 队列持久化
exclusive: false,
autoDelete: false,
arguments: null);
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
// 设置消息属性为持久化
var properties = channel.CreateBasicProperties();
properties.Persistent = true;
// 发布消息
channel.BasicPublish(exchange: "",
routingKey: "hello",
basicProperties: properties,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
注意:将消息标记为持久化(
Persistent = true)并不能保证消息绝对不丢失。它只是告诉RabbitMQ尽可能将消息保存到磁盘,但依然存在一个短的时间窗口。
接收消息 (Consumer)
使用 EventingBasicConsumer 可以方便地以事件驱动的方式处理消息:
csharp
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
// 模拟耗时任务
Thread.Sleep(1000);
Console.WriteLine(" [x] Done");
// 手动发送消息确认 (ack)
channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
};
// 启动消费者,并设置手动消息确认 (autoAck: false)
channel.BasicConsume(queue: "hello",
autoAck: false, // 关闭自动确认
consumer: consumer);
关键点:消息确认 (Ack)
-
自动确认 (
autoAck: true):消息一旦被传递给消费者,RabbitMQ立即将其从队列中删除。如果消费者处理消息过程中失败,消息将丢失。 -
手动确认 (
autoAck: false):消费者在处理完消息后,必须显式地发送一个确认 (BasicAck)。如果消费者在处理消息时挂掉,RabbitMQ会将此消息重新投递给另一个消费者。手动确认模式更能保证消息不被丢失。
💎 总结
-
管理工具:Web管理界面适合日常监控和管理,而
rabbitmqadmin更适合集成到脚本中进行自动化操作。 -
C#客户端:核心是使用
RabbitMQ.Client库。务必注意根据你的可靠性要求,在发送消息时配置持久化,在消费消息时合理选择消息确认模式,手动确认通常更可靠。
更多推荐



所有评论(0)