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 无法连接节点、系统错误 1067Erlang 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 原因。

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@ÏļÑÈð

说明仍然存在中文节点名配置或旧数据残留。

排查顺序:

  1. 检查 RABBITMQ_NODENAME
  2. 检查 hosts 是否能解析 rabbit-server
  3. 检查两个 Cookie 是否一致。
  4. 确认修改环境变量后已经重新安装服务。
  5. 测试环境可清理旧数据目录重新初始化。

十、开启 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 权限严格 使用 takeownicacls 后再复制

十八、最终成功检查清单

检查项 期望结果
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。按这个顺序处理,可以避开大多数本地开发环境中的启动和管理后台问题。