如何让Windows服务有效地等待RabbitMQ可用

时间:2018-10-12 13:25:52

标签: c# multithreading rabbitmq

多线程Windows服务(也称为serviceA)上的线程要等待RabbitMQ可用。在serviceA运行时,可以随时打开或关闭RabbitMQ。等待RabbitMQ可用的最佳方法是什么?

每个线程是否应该为间隔设置一个计时器-当计时器过去时,检查它是否可以再次连接?

while循环会占用大量处理器。

Thread.Sleep()可以阻止Windows服务停止。

Thread.SpinWait()似乎占用大量CPU。

此外,如果:

  1. RabbitMQ服务已停止

  2. serviceA然后启动

  3. 10分钟后或3天后,RabbitMQ服务启动

1 个答案:

答案 0 :(得分:0)

如何使用task注册回调并使用RabbitMQ Client的异步方法,我了解使用AsyncEventingBasicConsumer的Rabbit支持异步消息处理程序

您可以检查Handle RabbitMQ in async way