【发布时间】:2019-09-10 14:36:35
【问题描述】:
我有一个 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);
}
}
【问题讨论】:
标签: azure-service-fabric service-fabric-stateless