Как внедрить. NET Основные проверки работоспособности на размещенной службе? - PullRequest
0 голосов
/ 28 февраля 2020

Вопрос такой же, как задан в заголовке. Выполнить проверку операций с базой данных, запросов, команд и хранилища событий просто, но я не знаю, как и как лучше всего выполнить проверку работоспособности размещенной службы. Может ли кто-нибудь совет?

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Интерфейс IHostedService (и базовая реализация BackgroundService) имеют переопределяемые методы StartAsync() и StopAsync(). В нашей фоновой службе у нас есть:

public override Task StopAsync(CancellationToken cancellationToken)
{
      _logger.LogWarning("Background service stopping");
      return Task.CompletedTask;
}

. Вы можете использовать это для запуска того, что вы хотите каким-либо образом уведомить, когда ваш HostedService запускается или останавливается.

Если вам нужно иметь способ опроса службы, возможно, вы могли бы внедрить синглтон, который имеет простой статус внутри него, который устанавливается этими методами. Затем контроллер проверки работоспособности на вашем API / веб-сайте также может ввести это и прочитать состояние синглтона. Примерно так:

    public interface IHostedServiceStatus
    {
        bool IsHostedServiceRunning { get; set; }
    }

    public class HostedServiceStatus : IHostedServiceStatus
    {
        public bool IsHostedServiceRunning { get; set; }
    }

Установите это как одиночный, введите в ваш HostedService и установите IsHostedServiceRunning для методов StartAsync() и StopAsync() соответственно. Затем также введите в свой контроллер проверки здоровья и прочитайте IsHostedServiceRunning.

0 голосов
/ 01 апреля 2020

В дополнение к Simon B, в этой официальной документации Microsoft составлено полное руководство по написанию структуры проверки работоспособности для ваших размещенных служб.

Вам необходимо 3 элемента:

  1. Класс HealthCheck для вашей размещенной службы
  2. DI провайдера HealthCheck вместе с классом HealthCheck 'DI.
  3. Издатель HealthCheck
...