我在 Windows (2012) 服务器上短暂停止了 RabbitMQ。然而,当我尝试重新启动它时,它会在大约 30 秒内再次关闭。
Windows 事件日志包含以下消息:
RabbitMQ:Erlang 机器主动停止。由于 OnFail 设置为忽略,因此服务未重新启动。
RabbitMQ 错误日志包含以下消息:
=ERROR REPORT==== 12-Aug-2013::13:16:59 ===
** Generic server rabbit_web_dispatch_registry terminating
** Last message in was {add,rabbit_mgmt,
[{port,15672}],
#Fun<rabbit_web_dispatch.1.31447083>,
#Fun<rabbit_mgmt_app.2.5043001>,
{[],"RabbitMQ Management"}}
** When Server state == undefined
** Reason for termination ==
** {could_not_start_listener,[{port,15672}],eaddrinuse}
但是,我知道机器上运行的程序很少,并且没有其他程序应该尝试绑定到该端口。
这可能是什么原因造成的?
答案1
如果您重新安装 RabbitMQ 并在将其作为 Windows 服务运行时遇到问题,则解决方法如下:
在 cmd.exe 中,从 rabbit sbin 文件夹运行:
rabbitmq-service.bat remove
rabbitmq-service.bat install
net start rabbitmq
它在 Windows 7 上对我有用。
答案2
该命令netstat -ab
可用于查看哪个程序正在使用每个端口。(请注意,这些参数仅适用于 Windows。类似的 Linux 命令是netstat -lp
。两个平台都要求用户以管理员身份执行这些命令。)
在这种情况下,我打开了一个 Google Chrome 窗口,进入 RabbitMQ 管理控制台 ( http://localhost:15672/
),而 Chrome 不知何故一直在使用这个端口。关闭浏览器选项卡后,我就可以启动 RabbitMQ 了。
答案3
停止 RabbitMQ 服务,进入 C:\RabbitMQ\rabbit@XXXXXX-mnesia\ 文件夹。如果文件恢复目录为 0kb,请备份并删除它,然后重新启动 RabbitMQ。这应该会重新创建一个新的恢复目录其大小为 6kb 或更大。