我有一个Java应用程序,它期望RabbitMQ Server在应用程序启动时启动,并在可用时连接到它。但是,如果RabbitMQ Server在应用程序启动时关闭并随后启动,是否可以通过某种方式通知我的应用程序以尝试连接?基本上,我想避免不得不反复轮询RabbitMQ服务器以尝试连接到该服务器。如果我的应用程序可以预先注册为AMQP客户端,并在RabbitMQ启动时收到通知,那将是理想的选择。但是我无法从文档中找到如何做到这一点。
答案 0 :(得分:0)
在没有答案的情况下,我将问题张贴到其他地方,其中一位RabbitMQ开发人员对此做出了回应:
您有三个选择:
rabbitmqctl wait [pid file path]
,要求您知道 节点的PID文件路径是什么。这很不方便,只能解决 在本地计算机上。rabbitmqctl await_online_nodes [N] --timeout [timeout]
等待直到形成N个节点的簇(当然 N可以等于1)- 您可以轮询节点[1]使用的端口之一。 (是否有效取决于所使用的协议)
我想避免从应用程序中进行民意调查。 我觉得最好的解决方案是使用java WatchService(位于java.nio.file中)之类的东西,它可以监视RabbitMQ日志文件中的更改和周围的代码,这些更改和代码可以在REST仅一次通过REST通知我的应用程序被改变了。可以肯定的是,当收到通知时,我的观察者可以在日志文件中查找带时间戳的行,其中包含短语“ Starting RabbitMQ”。