Как я могу получить последний результат от Retrystrategy в стратегии внешнего тайм -аута с использованием Полли?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу получить последний результат от Retrystrategy в стратегии внешнего тайм -аута с использованием Полли?

Сообщение Anonymous »

У меня есть следующее требование о том, что я не могу понять, как решить. результат, как в следующем коде. Если у меня нет тайм-аута + Swarkback Strategy ExecuteSyc вернет последнюю попытку.

Код: Выделить всё

var pipelineBuilder = new ResiliencePipelineBuilder();

(Orders.Contracts.OrderView?, RequestResult) outerTempResult = new(null, new()); // A non-empty temp result for fallbacks.

var pipeline = pipelineBuilder
.AddFallback(new()
{
ShouldHandle = new PredicateBuilder().Handle(),
FallbackAction = args => Outcome.FromResultAsValueTask(outerTempResult),
})
.AddTimeout(TimeSpan.FromMilliseconds(options.MaxPollingTimeout)) // Global timeout for the entire pipeline
.AddRetry(new RetryStrategyOptions
{
ShouldHandle = new PredicateBuilder()
.HandleResult(newOrder =>  newOrder.Item1 == null || newOrder.Item1.Status == S4.Orders.Contracts.OrderStatus.InProgress),
Delay = TimeSpan.FromMilliseconds(OrderSettings.RetryInterval),
MaxRetryAttempts = OrderSettings.RetryCount,
BackoffType = DelayBackoffType.Linear,
UseJitter = true,
OnRetry = (args) =>
{
outerTempResult = args.Outcome.Result; // Assign this to an outer variable to use in the fallback handling callback.
return ValueTask.CompletedTask;
}
})
.Build();
< /code>
и выполнение запроса выглядит следующим образом: < /p>
var orderView = await pipeline.ExecuteAsync(async token =>
{
return await this.orderServiceClient.GetOrderAsync(id);
}, CancellationToken.None);

return orderView.Item2.ToApiResult();
Есть, вероятно, что -то очевидное, что я здесь не хватает ...


Подробнее здесь: https://stackoverflow.com/questions/796 ... t-strategy
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»