Как заставить Windows Service эффективно ждать, пока RabbitMQ станет доступным - PullRequest
0 голосов
/ 12 октября 2018

Потоки в многопоточной службе Windows (aka serviceA) хотят дождаться, когда RabbitMQ станет доступным.RabbitMQ может быть включен или выключен в любой момент времени, пока запущен сервис A.Как лучше всего дождаться, когда RabbitMQ станет доступным?

Должен ли каждый поток устанавливать таймер на интервал - по истечении таймера проверьте, может ли он снова подключиться?

Цикл while будет нагружать процессор.

Thread.Sleep () может препятствовать остановке службы Windows.

Thread.SpinWait (), по-видимому, нагружает процессор.

Кроме того, что если:

  1. Служба RabbitMQ остановлена ​​

  2. Служба A затем запускается

  3. Через 10 минут или 3 дня запускается служба RabbitMQ

1 Ответ

0 голосов
/ 12 октября 2018

Как насчет регистрации обратного вызова с task и использования асинхронного метода из клиента RabbitMQ, я понимаю, что Rabbit поддерживает асинхронный обработчик сообщений, используя AsyncEventingBasicConsumer

, вы можете проверить на Обрабатывать RabbitMQ в асинхронном режиме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...