我怎么知道RabbitMQ应用程序是否已经启动

时间:2018-07-15 13:47:13

标签: c# rabbitmq erlang windows2012

我有一个C#代码,在Windows Server 2012 R2上安装了Rabbitmq 3.7.4,erlang 20.2,我需要知道应用程序(而不是服务)何时启动。在运行rabbitmq-service installrabbitmq-service start之后,我正在寻找一个指示该应用程序正在运行的命令行。我知道wait pid_file, wait --pid pid命令,但是在我的机器上找不到pid文件。 documantaion说:

  

此命令将等待RabbitMQ应用程序在该节点上启动。如果指定了pidfile,它将等待pid文件创建

指定在哪里?

rabbitmq-echopid.bat返回:

  

系统找不到指定的路径。

2 个答案:

答案 0 :(得分:1)

在Windows上,默认情况下RabbitMQ不会创建PID文件,因此您必须发现PID,然后将其作为参数传递:rabbitmqctl.bat wait -P PID

要发现PID,可以使用RabbitMQ节点的名称运行以下命令:

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

这时,存在一个错误,该错误会在回显PID之前回显The system cannot find...。我提交了this bug,并将很快得到修复,但是与此同时,您可以编辑rabbitmq-echopid.bat脚本将!TDP0!更改为%TDP0%

您还可以使用任何其他Windows工具来查找运行RabbitMQ的erl.exe进程的PID-请参见脚本中的wmic.exe示例,也可以使用tasklist,或者Powershell等。

答案 1 :(得分:0)

在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命令(在反引号内)组合而动态生成的。