引言
在学习Spring Cloud Stream 时需要配置消息生产者, 消息消费者,把他们绑定到一个消息通道上面,需要用到的时 Rabbit MQ 然而小编没有学习过 RabbitMQ 也就没有 Rabbit MQ Server ,也不能将他们绑定到一起了, 因此需要进行rabbitmq server 的安装和配置。 但是谁能想到一个如此简单的过程却遇到了一个很大脑阔的问题,花费了3小时才解决。
环境
1.安装目录:
下面是我的安装目录: 没有中文路径
2.环境变量
RabbitMQ Server
的系统环境变量:
在Path
系统环境变量里面的就省略了,
3.服务
这是目前我的Rabbit MQ 服务, 因为问题已经解决了,这时是正常启动的, 没有解决这个问题时,服务时无法启动的一直显示停止状态
错误
错误代码:这是 187
的错误:
Status of node rabbit@LAPTOP-FMKQB7DT ...
** (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, 24352, 22686, 31168]])
src/rabbit_misc.erl:668: :rabbit_misc."-format_many/1-lc$^0/1-0-"/1
src/rabbit_misc.erl:668: :rabbit_misc."-format_many/1-lc$^0/1-0-"/1
src/rabbit_misc.erl:668: :rabbit_misc.format_many/1
(rabbitmqctl) lib/rabbitmqctl.ex:349: RabbitMQCtl.get_node_diagnostics/1
(rabbitmqctl) lib/rabbitmqctl.ex:307: RabbitMQCtl.format_error/3
(rabbitmqctl) lib/rabbitmqctl.ex:43: RabbitMQCtl.main/1
(elixir) lib/kernel/cli.ex:105: anonymous fn/3 in Kernel.CLI.exec_fun/2
错误截图: 使用 rabbitmqctl status
命令查看当前的 rabbitmq server 发现的异常状态:
原因
错误原因:
1.先检查自己RabbitMQ的安装路径是否有中文、空格或特殊字符
2.RabbitMQ默认提供的安装路径有空格,千万注意!!!
3.如果安装目录无误,仍然报错187。查看自己的用户名是否是中文的
解决
根据以上分析的三个原因,进行一个一个的摸排:
- 第一个:
rabbitmq server 路径有中文, 空格, 特殊符号等
, 中文路径就换先卸载, 然后在重新安装到么有没有中文路径的文件夹下,空格和特殊符号等, 就修改路径或者文件夹名称,之后千万记得要修改对应的环境变量的值 - 第二个:同理第一个,
- 第三个:对于用户名是中文或者含有中文的用户,是因为如果默认的安装,rabbitmq 服务会将日志写入到用户
user
目录下, 含有中文就完蛋了,因此,我们需要修改ribbitmq 服务的日志log,db, 等文件夹的位置为不含中文的路径:步骤如下:
1.先卸载掉原来的 rabbitmq server
2.在系统环境变量中创建一个 RABBITMQ_BASE 的变量,值为一个英文路径:
3.重新安装rabbitmq server
到这个目录下:会发现db 和 log 文件都到了这个目录下,
4.重新查看rabbitmq 的服务状态
rabbitmqctl status
像这个样大概就没问题了,然后
5.状态没有问题就直接安装插件, 然后启动:
rabbitmq-plugins enable rabbitmq_management
启动服务:可以通过命令行, 也可以通过双击安装目录的sbin
目录下的rabbitmq-server.bat
来启动服务:
net start RabbitMQ
6.打开 服务 面板进行验证,服务启动之后, 打开网址访问:http://localhost:15672/
到此就结束了, 这个大脑阔的问题。
总结
总的来说在遇到这个问题的时候,我首先是一顿百度, 结果毫无可用的信息, 网上根本没有遇到最开始的百度错误,后来找到了rabbit mq 的日志文件所在的位置, 查看日志文件后进行百度,发现也是无果, 最后尝试多使用一些命令, 发现了 rabbitmqctl status
这条救命的命令,直接运行得出了对应的 187
错误提示, 然后才能得以解决,
百度的东西很多, 但你要会百度,会看日志, 会读错误异常