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.原因分析
- 安装路径中不能带有中文和空格
- RabbitMQ默认的数据文件位置在 C:\Users\用户名AppData\Roaming\RabbitMQ,当保证安装路径中不带有中文时,出现上述问题的大部分原因都是数据文件路径中用户名为中文导致的
3.解决方法
- 直接修改计算机的用户名:
参考 Win10如何更改C:\Users\下的用户名 - 方法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