Исключение в фоновом обработчике очереди останавливает весь веб-сервис
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 блокирует поток веб-сервера
