Windows环境下RabbitMQ安装报错完美解决方法

Windows环境下RabbitMQ安装报错完美解决方法

1. 安装时出现的问题

当输入rabbitmqctl status或者rabbitmqctl start_app出现以下问题:

** (ArgumentError) argument error
    (stdlib) io_lib.erl:187: :io_lib.format(' * effective user\'s home directory: ~s~n', [[67, 58, 92, 85, 115, 101, 114, 115, 92, 29579, 30427]])
    src/rabbit_misc.erl:719: :rabbit_misc."-format_many/1-lc$^0/1-0-"/1
    src/rabbit_misc.erl:719: :rabbit_misc."-format_many/1-lc$^0/1-0-"/1
    src/rabbit_misc.erl:719: :rabbit_misc.format_many/1
    (rabbitmqctl) lib/rabbitmqctl.ex:553: RabbitMQCtl.get_node_diagnostics/1
    (rabbitmqctl) lib/rabbitmqctl.ex:409: RabbitMQCtl.format_error/3
    (rabbitmqctl) lib/rabbitmqctl.ex:584: RabbitMQCtl.maybe_with_distribution/3
    (rabbitmqctl) lib/rabbitmqctl.ex:93: RabbitMQCtl.exec_command/2

:badarg

或者输入rabbitmq-server.bat后出现以下问题:

BOOT FAILED
===========
Error during startup: {error,
                       {rabbitmq_management_agent,
                        {{shutdown,
                          {failed_to_start_child,rabbit_mgmt_agent_sup,
                           {shutdown,
                            {failed_to_start_child,
.....

都是由于RabbitMQ的安装路径或者数据路径包含中文导致的

2.原因分析

  1. 安装路径中不能带有中文和空格
  2. RabbitMQ默认的数据文件位置在 C:\Users\用户名AppData\Roaming\RabbitMQ,当保证安装路径中不带有中文时,出现上述问题的大部分原因都是数据文件路径中用户名为中文导致的

3.解决方法

  1. 直接修改计算机的用户名:
    参考 Win10如何更改C:\Users\下的用户名
  2. 方法1修改过于麻烦,尝试通过修改RabbitMQ的默认数据文件路径解决:
// 移除服务 
rabbitmq-service.bat remove    
// 变更数据所在的文件位置,不包含中文
set RABBITMQ_BASE=G:\6CodingSoftware\RabbitMQ\rabbitmq_server-3.8.9\data
rabbitmq-service.bat install
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl start_app  或者 rabbitmq-server.bat

在这里插入图片描述
在这里插入图片描述

在data文件夹下出现以下的内容就说明设置成功

3. 当以为问题解决时,发现方法2每次都需要重复运行命令,如果直接打开rabbitmq-server.bat还是默认的数据文件路径,并报错
在这里插入图片描述
经过研究,找到了最直接的解决方法,修改rabbitmq-env.bat文件,设置默认的数据文件路径

REM If ERLANG_HOME is not defined, check if "erl.exe" is available in
REM the path and use that.
if not defined ERLANG_HOME (
    for /f "delims=" %%F in ('powershell.exe -NoLogo -NoProfile -NonInteractive -Command "(Get-Command erl.exe).Definition"') do @set ERL_PATH=%%F
    if exist "!ERL_PATH!" (
        for /f "delims=" %%F in ("!ERL_PATH!") do set ERL_DIRNAME=%%~dpF
        for /f "delims=" %%F in ("!ERL_DIRNAME!\..") do @set ERLANG_HOME=%%~dpF%%~nF%%~xF
    )
    set ERL_PATH=
    set ERL_DIRNAME=
    // 插入一条语句
    set RABBITMQ_BASE=!RABBITMQ_HOME!/data
)


set ERL_PATH=
set ERL_DIRNAME=
后插入 set RABBITMQ_BASE=!RABBITMQ_HOME!/data

然后执行命令:

rabbitmq-service.bat remove    
rabbitmq-service.bat install
rabbitmq-plugins enable rabbitmq_management
rabbitmq-server

!RABBITMQ_HOME!为安装RabbitMQ的路径G:\6CodingSoftware\RabbitMQ\rabbitmq_server-3.8.9

问题到此解决,后续想要运行RabbitMQ直接运行rabbitmq-server.bat
在这里插入图片描述

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值