Вступить в клуб →
сложнаявопросasync/await, многопоточность и фоновые задачи

Исключение в фоновом обработчике очереди останавливает весь веб-сервис

public class OutboxPublisher : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken ct)
    {
        while (!ct.IsCancellationRequested)
        {
            await PublishBatchAsync(ct); // иногда исключение от брокера
            await Task.Delay(1000, ct);
        }
    }
}

Сервис на .NET 8. Когда брокер на секунду недоступен, приложение целиком завершается, а вместе с ним и API. Что происходит и как правильно?

  • Необработанное исключение в BackgroundService останавливает хост
  • Task.Delay бросает исключение при недоступном брокере
  • BackgroundService нельзя использовать вместе с API
  • Цикл while блокирует поток веб-сервера

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела