我们正在.Net6中开发Azure函数,它通过HTTP协议与多个第三方应用程序交互。
我们已经实现了Polly来处理瞬态错误。
Polly的唯一问题是,您必须用策略包装代码,以使其具有弹性。
var policy = Policy
.Handle<SomeExceptionType>()
.Retry();
policy.Execute(() => DoSomething());这就是为什么我们还在探索其他选项,例如在协议级别实现弹性,如"HTTP".。
因此,我们的想法是,如果我们可以在协议级别实现弹性,那么就不必围绕代码包装策略,这样所有通过HTTP协议的请求都必须使用相同的弹性策略。
这样,我们就不必每次都围绕代码包装策略,以使代码具有弹性。任何帮助都将不胜感激。
不知道拦截器能不能帮上忙!
发布于 2022-10-05 06:16:54
如果您将HttpClient用于您的Http通信,那么您是幸运的,因为您可以使用IAsyncPolicy<HttpResponseMessage>策略来装饰整个HttpClient。
您可以通过DI来完成它。
IAsyncPolicy<HttpResponseMessage> policy = Policy<HttpResponseMessage>...
services.AddHttpClient("decoratedClient")
.AddPolicyHandler(policy);或者也没有DI
IAsyncPolicy<HttpResponseMessage> policy = Policy<HttpResponseMessage>...
var pollyHandler = new PolicyHttpMessageHandler(policy);
pollyHandler.InnerHandler = new HttpClientHandler();
var client = new HttpClient(pollyHandler);https://stackoverflow.com/questions/73952061
复制相似问题