Windows 本机安装 RabbitMQ 3.13.7 完整教程:解决中文电脑名、Cookie 与管理页 500
这篇文章记录一次 Windows 本机安装 RabbitMQ 的最终成功流程,适合 Spring Boot、本地微服务开发、消息队列学习环境使用。
重点解决的问题包括:
- Windows 电脑名包含中文导致 RabbitMQ 节点名乱码。
RABBITMQ_BASE使用相对路径导致 Windows 服务启动失败。- RabbitMQ Windows 服务与当前用户的 Erlang Cookie 不一致。
- Management 管理页面出现
Management API returned status code 500。 rabbitmqctl无法连接节点、系统错误 1067、Erlang distribution failed等问题。
适用环境
| 软件 | 版本 |
|---|---|
| Windows | Windows 10 / Windows 11 64 位 |
| RabbitMQ | 3.13.7 |
| Erlang/OTP | 26.2.5.21 |
| ERTS 虚拟机 | 14.2.5.15 |
| 开发场景 | Spring Boot、本地微服务、消息队列学习 |
安装包路径示例:
C:\Downloads\rabbitmq\otp_win64_26.2.5.21.exe
C:\Downloads\rabbitmq\rabbitmq-server-3.13.7.exe
安装目录:
C:\Program Files\Erlang OTP
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7
RabbitMQ 数据目录:
C:\RabbitMQData
固定节点名:
rabbit@rabbit-server
一、安装前注意事项
建议遵守以下规则:
- Erlang 与 RabbitMQ 都使用默认安装路径。
- 不要同时安装多个 Erlang 版本。
RABBITMQ_BASE必须使用绝对路径。- 中文电脑名环境必须固定一个英文 RabbitMQ 节点名。
- 修改环境变量后,需要重新安装 RabbitMQ Windows 服务。
rabbitmq-service status不是有效命令,查看服务状态应使用sc query RabbitMQ。
命令中不要复制 CMD 提示符最后的 >。
错误示例:
cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7\sbin>
正确命令:
cd /d "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7\sbin"
二、清理旧版本
这一步只在之前安装失败、修改过节点名、修改过数据目录,或者服务状态异常时执行。全新安装可以跳过。
以管理员身份打开 CMD:
cd /d "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7\sbin"
停止并删除 RabbitMQ 服务:
rabbitmq-service stop
rabbitmq-service remove
如果提示服务没有启动,可以忽略:
没有启动 RabbitMQ 服务
NET HELPMSG 3521
检查残留进程:
tasklist | findstr /i "erl epmd rabbit"
结束残留进程:
taskkill /F /IM erl.exe
taskkill /F /IM epmd.exe
taskkill /F /IM erlsrv.exe
提示“没有找到进程”也可以忽略。
如果是测试环境且没有需要保留的队列和消息,可以清理旧数据:
rmdir /s /q "C:\RabbitMQData"
rmdir /s /q "%APPDATA%\RabbitMQ"
删除数据目录会清除用户、队列、交换机、消息、权限等 RabbitMQ 数据。存在重要数据时不要执行。
旧软件建议从 Windows“已安装的应用”中卸载,然后再重新安装,不建议直接删除注册表。
三、安装 Erlang
运行:
C:\Downloads\rabbitmq\otp_win64_26.2.5.21.exe
使用默认安装路径:
C:\Program Files\Erlang OTP
安装完成后关闭原来的 CMD,重新打开 CMD。
验证 Erlang:
erl -version
可能显示:
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2.5.15
这里的 14.2.5.15 是 ERTS 虚拟机版本,安装包版本仍然是 Erlang/OTP 26.2.5.21。
检查路径:
where erl
正常结果:
C:\Program Files\Erlang OTP\bin\erl.exe
如果出现多个 erl.exe 路径,说明电脑上可能混装了多个 Erlang 版本,应先清理旧版本和环境变量。
四、安装 RabbitMQ
运行:
C:\Downloads\rabbitmq\rabbitmq-server-3.13.7.exe
使用默认安装位置:
C:\Program Files\RabbitMQ Server
安装程序通常会自动注册 RabbitMQ Windows 服务。
如果电脑名包含中文,为避免节点名乱码,还需要继续执行下面的节点配置。
五、配置英文节点名和数据目录
以管理员身份打开 CMD:
setx /M RABBITMQ_NODENAME "rabbit@rabbit-server"
setx /M RABBITMQ_BASE "C:\RabbitMQData"
数据目录必须是绝对路径。
正确:
C:\RabbitMQData
错误:
RabbitMQData
如果使用相对路径,可能出现:
BOOT FAILED
assertEqual
expected RabbitMQData/db/...
value C:/Program Files/.../sbin/RabbitMQData/db/...
并导致 Windows 服务错误 1067。
执行完成后,关闭当前 CMD,重新以管理员身份打开 CMD。
检查:
set RABBITMQ
正常:
RABBITMQ_BASE=C:\RabbitMQData
RABBITMQ_NODENAME=rabbit@rabbit-server
六、配置 hosts 主机映射
因为实际 Windows 电脑名可能是中文,而 RabbitMQ 节点使用:
rabbit@rabbit-server
所以需要让系统能够解析 rabbit-server。
管理员 CMD:
notepad C:\Windows\System32\drivers\etc\hosts
在文件末尾添加:
127.0.0.1 rabbit-server
保存后测试:
ping rabbit-server
正常:
Pinging rabbit-server [127.0.0.1]
如果出现:
nxdomain
non-existing domain
unable to connect to epmd on rabbit-server
说明 hosts 尚未配置成功。
七、重新注册 RabbitMQ Windows 服务
RabbitMQ 安装程序可能已经提前创建了服务,而节点名和数据目录是在安装后配置的,因此需要重新注册服务,让服务读取新的环境变量。
进入 RabbitMQ 命令目录:
cd /d "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7\sbin"
删除旧服务:
rabbitmq-service stop
rabbitmq-service remove
重新安装:
rabbitmq-service install
正常:
Service RabbitMQ added to system.
启动:
rabbitmq-service start
正常:
RabbitMQ 服务已经启动成功。
查看 Windows 服务状态:
sc query RabbitMQ
正常:
STATE : 4 RUNNING
如果出现错误 1067,可以直接执行:
rabbitmq-server.bat
它会在当前窗口显示真实的 BOOT FAILED 原因。
八、确保 Erlang Cookie 一致
RabbitMQ 服务和 rabbitmqctl 命令之间通过 Erlang 分布式通信连接,双方必须使用相同的 .erlang.cookie。
RabbitMQ Windows 服务通常以 LocalSystem 身份运行。
确认服务运行账号:
sc qc RabbitMQ | findstr /i SERVICE_START_NAME
通常显示:
SERVICE_START_NAME : LocalSystem
查看服务端 Cookie:
type C:\Windows\System32\config\systemprofile\.erlang.cookie
查看当前用户 Cookie:
type "%USERPROFILE%\.erlang.cookie"
例如,服务端是:
YQQMKJJAEECWSDWQFAQE
当前用户是:
KQHOQLVOKUYMYFGEHHQM
这两个值不一致时,rabbitmqctl status 会出现:
TCP connection succeeded but Erlang distribution failed
或者:
check if the Erlang cookie is identical
先停止服务:
rabbitmq-service stop
如果当前用户 Cookie 无法覆盖,先取得权限:
takeown /F "%USERPROFILE%\.erlang.cookie"
icacls "%USERPROFILE%\.erlang.cookie" /grant "%USERNAME%":F
将服务端 Cookie 复制给当前用户:
copy /Y "C:\Windows\System32\config\systemprofile\.erlang.cookie" "%USERPROFILE%\.erlang.cookie"
重新限制权限:
icacls "%USERPROFILE%\.erlang.cookie" /inheritance:r
icacls "%USERPROFILE%\.erlang.cookie" /grant:r "%USERNAME%":F SYSTEM:F
再次比较:
type C:\Windows\System32\config\systemprofile\.erlang.cookie
type "%USERPROFILE%\.erlang.cookie"
两个内容必须完全一致。
启动服务:
rabbitmq-service start
九、验证 RabbitMQ 节点通信
执行:
rabbitmqctl status
成功时应看到:
Status of node rabbit@rabbit-server ...
RabbitMQ version: 3.13.7
Node name: rabbit@rabbit-server
还应看到数据目录:
C:\RabbitMQData\db\rabbit@rabbit-server-mnesia
如果仍然显示:
rabbit@ÏļÑÈð
说明仍然存在中文节点名配置或旧数据残留。
排查顺序:
- 检查
RABBITMQ_NODENAME。 - 检查 hosts 是否能解析
rabbit-server。 - 检查两个 Cookie 是否一致。
- 确认修改环境变量后已经重新安装服务。
- 测试环境可清理旧数据目录重新初始化。
十、开启 Web 管理后台
进入 RabbitMQ 命令目录:
cd /d "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7\sbin"
启用插件:
rabbitmq-plugins enable rabbitmq_management
正常会启用:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
重启服务:
rabbitmq-service stop
rabbitmq-service start
检查插件:
rabbitmq-plugins list
正常:
[E*] rabbitmq_management
[e*] rabbitmq_management_agent
[e*] rabbitmq_web_dispatch
检查监听端口:
rabbitmqctl status
正常应包含:
port: 15672, protocol: http
port: 5672, protocol: amqp
port: 25672, protocol: clustering
十一、访问管理后台
浏览器打开:
http://localhost:15672
默认本机账号:
用户名:guest
密码:guest
guest 默认只允许从 RabbitMQ 所在电脑本机登录。
十二、创建管理员账号
推荐创建独立管理员账号。
rabbitmqctl add_user admin Admin@123456
设置管理员角色:
rabbitmqctl set_user_tags admin administrator
授予默认虚拟主机 / 的权限:
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
登录信息:
账号:admin
密码:Admin@123456
以上密码仅作为本地测试示例,正式环境应使用更强密码。
查看用户:
rabbitmqctl list_users
查看权限:
rabbitmqctl list_permissions -p /
十三、管理页面 500 错误处理
如果页面可以打开,但显示:
Management API returned status code 500
检查日志:
findstr /i "error invalid_byte exception crash" "C:\RabbitMQData\log\rabbit@rabbit-server.log"
如果看到:
invalid_byte
rabbit@ÏļÑÈð
rabbit_mgmt_wm_overview:to_json
说明 Management API 的历史数据里仍然残留乱码的中文节点名。
这与 Cookie 问题不同:
- Cookie 不一致主要导致
rabbitmqctl无法连接。 invalid_byte主要是旧中文节点名导致管理 API 无法生成 JSON。
如果是新安装且没有重要数据,可执行彻底初始化:
rabbitmq-service stop
rabbitmq-service remove
taskkill /F /IM erl.exe
taskkill /F /IM epmd.exe
rmdir /s /q "C:\RabbitMQData"
rabbitmq-service install
rabbitmq-service start
rabbitmq-plugins enable rabbitmq_management
rabbitmq-service stop
rabbitmq-service start
然后重新创建管理员账号。
删除
C:\RabbitMQData会删除 RabbitMQ 中的全部数据。
十四、常用端口
| 端口 | 用途 |
|---|---|
| 5672 | AMQP 客户端连接,Spring Boot 默认使用 |
| 15672 | Management Web 管理后台和 HTTP API |
| 25672 | RabbitMQ 节点通信和 CLI 通信 |
| 4369 | Erlang epmd 节点发现 |
检查端口:
netstat -ano | findstr ":5672"
netstat -ano | findstr ":15672"
netstat -ano | findstr ":25672"
netstat -ano | findstr ":4369"
十五、常用 RabbitMQ 命令
进入命令目录:
cd /d "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.13.7\sbin"
查看状态:
rabbitmqctl status
查看队列:
rabbitmqctl list_queues name messages consumers
查看交换机:
rabbitmqctl list_exchanges name type durable
查看绑定关系:
rabbitmqctl list_bindings
查看用户:
rabbitmqctl list_users
查看连接:
rabbitmqctl list_connections
查看插件:
rabbitmq-plugins list
停止服务:
rabbitmq-service stop
启动服务:
rabbitmq-service start
查看 Windows 服务:
sc query RabbitMQ
十六、Spring Boot 集成 RabbitMQ
添加 Maven 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.yml:
spring:
rabbitmq:
host: localhost
port: 5672
username: admin
password: Admin@123456
virtual-host: /
创建测试队列:
package com.example.config;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMqConfig
{
public static final String TEST_QUEUE = "test.queue";
@Bean
public Queue testQueue()
{
return new Queue(TEST_QUEUE, true);
}
}
发送消息:
package com.example.service;
import com.example.config.RabbitMqConfig;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
@Service
public class RabbitProducer
{
private final RabbitTemplate rabbitTemplate;
public RabbitProducer(RabbitTemplate rabbitTemplate)
{
this.rabbitTemplate = rabbitTemplate;
}
public void send(String message)
{
rabbitTemplate.convertAndSend(RabbitMqConfig.TEST_QUEUE, message);
}
}
消费消息:
package com.example.listener;
import com.example.config.RabbitMqConfig;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class RabbitConsumer
{
@RabbitListener(queues = RabbitMqConfig.TEST_QUEUE)
public void receive(String message)
{
System.out.println("收到 RabbitMQ 消息:" + message);
}
}
项目启动日志中出现类似内容,说明连接成功:
Created new connection: rabbitConnectionFactory
十七、常见问题对照表
| 报错或现象 | 常见原因 | 处理方法 |
|---|---|---|
系统错误 1067 |
数据目录使用相对路径、旧数据冲突、启动配置错误 | 使用绝对路径,运行 rabbitmq-server.bat 查看真实错误 |
nxdomain |
rabbit-server 无法解析 |
hosts 添加 127.0.0.1 rabbit-server |
Erlang distribution failed |
Cookie 不一致 | 同步 SYSTEM 和当前用户 Cookie |
invalid node name: short |
节点名只写了 rabbit |
使用 rabbit@rabbit-server |
rabbit@ÏļÑÈð |
中文电脑名被错误编码 | 固定英文节点名并清理旧数据 |
| Management API 500 | 历史乱码节点名污染管理数据 | 固定节点名后重新初始化数据目录 |
rabbitmq-service status 显示帮助 |
该命令不存在 | 使用 sc query RabbitMQ |
cd ...sbin> 语法错误 |
复制了提示符 > |
使用带引号的 cd /d 命令 |
Access is denied 复制 Cookie |
Cookie ACL 权限严格 | 使用 takeown 和 icacls 后再复制 |
十八、最终成功检查清单
| 检查项 | 期望结果 |
|---|---|
| Erlang 安装 | where erl 只有正确路径 |
| Erlang 版本 | OTP 26.2.5.21 / ERTS 14.2.5.15 |
| RabbitMQ 版本 | 3.13.7 |
| 数据目录 | C:\RabbitMQData |
| 节点名 | rabbit@rabbit-server |
| hosts | rabbit-server 解析到 127.0.0.1 |
| Cookie | SYSTEM 与当前用户完全一致 |
| Windows 服务 | STATE : 4 RUNNING |
| CLI 通信 | rabbitmqctl status 成功 |
| AMQP 端口 | 5672 |
| 管理端口 | 15672 |
| Management 插件 | 3 个相关插件运行 |
| Spring Boot | 成功创建 RabbitMQ 连接 |
十九、最终环境结构
Windows 11
│
├── Erlang/OTP 26.2.5.21
│ └── ERTS 14.2.5.15
│
├── RabbitMQ 3.13.7
│ ├── 节点:rabbit@rabbit-server
│ ├── 数据:C:\RabbitMQData
│ ├── AMQP:5672
│ ├── 管理面板:15672
│ ├── 节点通信:25672
│ └── epmd:4369
│
└── Spring Boot
└── spring-boot-starter-amqp
这套流程的关键顺序是:
安装 Erlang
→ 安装 RabbitMQ
→ 设置英文节点名和绝对数据目录
→ 配置 hosts
→ 重新注册服务
→ 同步 Cookie
→ 验证 rabbitmqctl
→ 开启 Management 插件
→ 创建管理员账号
→ 配置 Spring Boot
Windows 本机安装 RabbitMQ 时,真正容易出问题的通常不是 RabbitMQ 本身,而是中文电脑名、Windows 服务运行账号、环境变量生效时机和 Erlang Cookie。按这个顺序处理,可以避开大多数本地开发环境中的启动和管理后台问题。