当输入 rabbitmqctl start_app出现以下问题:
D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\sbin>rabbitmqctl start_app
Starting node rabbit@LAPTOP-I00QE3O2 ...
** (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, 38889, 27704, 25996]])
src/rabbit_misc.erl:669: :rabbit_misc."-format_many/1-lc$^0/1-0-"/1
src/rabbit_misc.erl:669: :rabbit_misc."-format_many/1-lc$^0/1-0-"/1
src/rabbit_misc.erl:669: :rabbit_misc.format_many/1
(rabbitmqctl) lib/rabbitmqctl.ex:488: RabbitMQCtl.get_node_diagnostics/1
(rabbitmqctl) lib/rabbitmqctl.ex:379: RabbitMQCtl.format_error/3
(rabbitmqctl) lib/rabbitmqctl.ex:45: RabbitMQCtl.main/1
(elixir) lib/kernel/cli.ex:105: anonymous fn/3 in Kernel.CLI.exec_fun/2
都是由于RabbitMQ的安装路径或者数据路径包含中文导致的
原因分析
RabbitMQ默认的数据文件位置在 C:\Users\用户名AppData\Roaming\RabbitMQ,当保证安装路径中不带有中文时,出现上述问题的大部分原因都是数据文件路径中用户名为中文导致的
问题解决
- 直接修改计算机的用户名:
参考 Win10如何更改C:\Users\下的用户名 - 方法1修改过于麻烦,尝试通过修改RabbitMQ的默认数据文件路径解决:
// 移除服务
1.rabbitmq-service.bat remove
// 变更数据所在的文件位置,不包含中文
2.set RABBITMQ_BASE=D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\data
3.rabbitmq-service.bat install
4.rabbitmq-plugins enable rabbitmq_management
5.rabbitmq-server.bat
D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\sbin>rabbitmq-service.bat remove
D:\develop\MQ\erl10.3\erts-10.3\bin\erlsrv: Service RabbitMQ removed from system.
D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\sbin>set RABBITMQ_BASE=D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\data
D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\sbin>rabbitmq-service.bat install
D:\develop\MQ\erl10.3\erts-10.3\bin\erlsrv: Service RabbitMQ added to system.
D:\develop\MQ\RabbitMQserver\rabbitmq_server-3.7.14\sbin>rabbitmq-plugins enable rabbitmq_management
最后我们就可以正常的访问 http://localhost:15672/