1.问题背景
基于docker容器yum install安装的RabbitMQ,这里需要修改RabbitMQ下的相关配置文件,我这里关闭了RabbitMQ。
修改之后重启RabbitMQ,发现Restart不了了,而且还直接抛出了异常~~尴尬!
异常信息:
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbl -xe" for details.
于是在网上查询了一下这个报错的解决方法,Nice,还真找到了!
1.1.解决方法
①使用命令journalctl -xe,定位到详细的报错日志信息;
journalctl -xe
通过这个执行到命令行后,会打印出非常多的问题信息,让我们继续往下定位到ERROR处:
好的,问题大致清楚了,是启动时的端口被占用了,导致的起不来!
②执行rabbitmq-server -detached,重启编译并运行RabbitMQ服务,会打印出更标准的日志信息:
rabbitmq-server –detached
这里可以看到基本就是云服务器上的一个process进程占用了port 25672端口,导致MQ不能使用这个端口进行通讯,启动不来!
③通过netstat -lnp | grep 25672命令,找到罪魁祸首,是哪个进程搞得鬼!
netstat -lnp | grep 端口号
可以看到这里是docker上面的一个进程占用了25672端口,因为我的RabbitMQ是运行在docker容器中的,这里我先关闭了RabbitMQ Service,但是docker本身并没有关闭,那么同docker一起运行的还有erlang安装环境(RabbitMQ本身依赖),那么可能就占用了25672端口,所以我就一起把dokcer也重新启动了,相当于关闭了erlang运行环境等等的东西。
在次启动RabbitMQ服务,正常启动运行!问题解决!
1.2.问题总结及相关类似问题
这个问题简单说就是关闭RabbitMQ太随意导致的,一般我们关闭容器内的RabbitMQ可以直接关闭dokcer容器(鉴于容器内的服务只有一个RabbitMQ的情况下),或者重启RabbitMQ时,需要看下有没有其它依赖。
问题关联搜索了两篇比较相似的博文:
RabbitMq入门到精通-ERROR: distribution port 25672 in use by rabbit