首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在协议级实现Resiliency

在协议级实现Resiliency
EN

Stack Overflow用户
提问于 2022-10-04 18:18:51
回答 1查看 74关注 0票数 -1

我们正在.Net6中开发Azure函数,它通过HTTP协议与多个第三方应用程序交互。

我们已经实现了Polly来处理瞬态错误。

Polly的唯一问题是,您必须用策略包装代码,以使其具有弹性。

代码语言:javascript
复制
var policy = Policy
          .Handle<SomeExceptionType>()
          .Retry();
policy.Execute(() => DoSomething());

这就是为什么我们还在探索其他选项,例如在协议级别实现弹性,如"HTTP".。

因此,我们的想法是,如果我们可以在协议级别实现弹性,那么就不必围绕代码包装策略,这样所有通过HTTP协议的请求都必须使用相同的弹性策略。

这样,我们就不必每次都围绕代码包装策略,以使代码具有弹性。任何帮助都将不胜感激。

不知道拦截器能不能帮上忙!

EN

回答 1

Stack Overflow用户

发布于 2022-10-05 06:16:54

如果您将HttpClient用于您的Http通信,那么您是幸运的,因为您可以使用IAsyncPolicy<HttpResponseMessage>策略来装饰整个HttpClient

您可以通过DI来完成它。

代码语言:javascript
复制
IAsyncPolicy<HttpResponseMessage> policy = Policy<HttpResponseMessage>...
services.AddHttpClient("decoratedClient")
        .AddPolicyHandler(policy);

或者也没有DI

代码语言:javascript
复制
IAsyncPolicy<HttpResponseMessage> policy = Policy<HttpResponseMessage>...
var pollyHandler = new PolicyHttpMessageHandler(policy);
pollyHandler.InnerHandler = new HttpClientHandler();

var client = new HttpClient(pollyHandler);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73952061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档