У меня есть служба без отслеживания состояния Service Fabric, которая работает как фоновое задание и читает из очереди. Для каждого полученного сообщения он вызывает внешний API.
Если частота отказов для внешнего вызова высока, я хочу отключить конкретный экземпляр службы. Если я не могу обработать сообщения, я не хочу читать их из очереди.
Как лучше всего завершить работу экземпляра с помощью метода RunAsync ()? Я выбрасываю OperationCanceledException, чтобы отключить экземпляр, но правильный ли это подход?
protected override async Task RunAsync(CancellationToken cancellationToken)
{
while (true)
{
cancellationToken.ThrowIfCancellationRequested();
if (/* error rate is high*/)
{
throw new OperationCanceledException();
}
await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
}
}