Start Debugging

Тег: resilience

6 статей

Исправление: собственный DelegatingHandler не запускается повторно при каждом retry с AddStandardResilienceHandler
DelegatingHandler, зарегистрированный до AddStandardResilienceHandler, выполняется один раз на логический запрос, а не на каждую повторную попытку. Перенесите его после обработчика устойчивости и сделайте идемпотентным, потому что retry повторно отправляет тот же HttpRequestMessage. Проверено на Microsoft.Extensions.Http.Resilience 10.10.0 и 8.10.0.
StackExchange.Redis 3.3 уходит с узла Redis до того, как сервер разорвёт соединение
StackExchange.Redis 3.3.0 добавляет включаемые по желанию уведомления об обслуживании (smart client handoffs) для Redis Enterprise, Redis Cloud и Azure Managed Redis: смягчённые таймауты во время миграций, повторное чтение топологии и заблаговременный переход до исчезновения конечной точки. Разбираем, как это включить и с какой ошибкой SER010 вы столкнётесь первой.
Polly 8.8 перезагружает resilience-конвейер из вашего собственного IOptionsMonitor
В Polly 8.8.0 появился EnableReloadsWithMonitor, и resilience-конвейер теперь может перезагружаться на лету из feature flag или монитора удалённой конфигурации, не зарегистрированного в DI. Тестовый прогон показывает пересборку, а заодно одну ловушку: context.GetOptions по-прежнему читает монитор из DI и возвращает значения по умолчанию.
Как переопределить обработчик отказоустойчивости, который регистрирует Aspire
AddServiceDefaults в Aspire применяет стандартный обработчик отказоустойчивости к каждому HttpClient. Повторный вызов AddStandardResilienceHandler не заменяет его, а добавляет второй обработчик поверх первого. Здесь разобраны три реальных способа переопределения, недокументированное имя настроек -standard и бесконечный тайм-аут, который вы получаете, если просто удалить обработчик.
Polly против resilience handlers в .NET 11: что выбрать?
Используйте resilience handler из Microsoft.Extensions.Http.Resilience для вызовов через HttpClient, потому что это Polly с понимающими HTTP значениями по умолчанию и телеметрией в одну строку. Обращайтесь к ResiliencePipeline из Polly напрямую только тогда, когда защищаете нечто, не являющееся HttpClient.