Альтернатива типу AsyncRetryPolicy в старых пакетах Polly - PullRequest
0 голосов
/ 07 мая 2020

Я создал новый код / ​​проект, который использует Polly для повторных попыток электронной почты, и я выбрал последний пакет Polly Nuget v7.2.1. Но потом оказалось, что у нас есть другие проекты, которые используют более старую версию Polly (v2.2.7), и поэтому у меня есть пакет для перехода на более раннюю версию моего проекта.

Но после перехода на более раннюю версию он не может скомпилироваться из-за того, что этот тип не распознается больше - «AsyncRetryPolicy».

Какую альтернативу этому типу я могу использовать со старой версией Polly?

Мой код:

private AsyncRetryPolicy<Response> CreatePollyPolicy(SendEmailMessageRequest request)
        {
            var policy = Policy.Handle<Exception>()
                .OrResult<SendGrid.Response>(response => 500)
                .WaitAndRetryAsync(
                5, retryAttempt => TimeSpan.FromSeconds(10 * retryAttempt),
                async (exception, timeSpan, retryCount, context) =>
                     {
                         await LogFailMessage(request);
                     }
                 );

            return policy;
        }

1 Ответ

1 голос
/ 07 мая 2020

В Polly v2.2.7 тип политики, возвращаемый функцией. WaitAndRetryAsync(...), равен вероятно, RetryPolicy<Response>.

Во многих средах разработки, если вы наведите указатель мыши на значок var ключевое слово или WaitAndRetryAsync(...) - или если вы проверите intellisense для типа возврата из WaitAndRetryAsync(...) - оно сообщит вам, что это за тип.

Однако , результаты обработки политик (предложение .OrResult<TResult>(...)) не было добавлено до v4.3.0 , поэтому вы не сможете использовать политику в вопросе как есть с v2.2.7. Рекомендуется обновить проекты, использующие v2.2.7, до более поздней (/ последней) версии Polly, если сможете.

...