如何知道RabbitMQ应用程序是否已启动

ojsjcaue  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(2)|浏览(186)

我有一个安装rabbitmq3.7.4的c#代码,Erlang 20.2在Windows Server 2012 R2上,我需要知道应用程序何时(不是服务)已启动。在运行rabbitmq-service installrabbitmq-service start后,我正在查找指示应用程序正在运行的命令行。我知道wait pid_file, wait --pid pid命令,但无法'I don“我的机器上找不到pid文件。文档内容如下:
此命令将等待RabbitMQ应用程序在节点上启动。如果指定了pidfile,它将等待创建pid文件
指定在哪里?
rabbitmq-echopid.bat会传回:
系统找不到指定的路径。

5q4ezhmt

5q4ezhmt1#

在Windows上,RabbitMQ默认情况下不创建PID文件,因此您必须发现PID,然后将其作为参数传递:rabbitmqctl.bat wait -P PID
要发现PID,您可以使用RabbitMQ节点的名称运行以下命令:

.\rabbitmq-echopid.bat rabbit@my-hostname

此时,有一个错误,即The system cannot find...将在PID被回显之前被回显。我提交了this bug,很快就会有一个修复程序,但在此期间,您可以编辑rabbitmq-echopid.bat脚本,将!TDP0!更改为%TDP0%
您也可以使用任何其他Windows工具来查找运行RabbitMQ的erl.exe进程的PID-请参阅脚本以获取wmic.exe的示例,或者您可以使用tasklist或Powershell等。

mspsb9vt

mspsb9vt2#

在Windows上,可以运行以下批处理脚本:

START /B rabbitmq-server

START /wait cmd /c "rabbitmq-echopid.bat -n rabbit@`hostname` > rabbitmq_pid.txt"
set /p PID=<rabbitmq_pid.txt
echo %PID%
del rabbitmq_pid.txt

cmd /c "rabbitmqctl wait -P %PID%"

请注意,要使rabbitmq-echopid命令正常工作,必须在节点名前添加一个-n
此外,在上面的批处理脚本中,节点名是通过将“rabbit@”与hostname windows命令(在反斜线内)组合在一起动态生成的。

相关问题