稍后根据响应正文中的值增加 CircuitBreaker 中的错误计数器

问题描述 投票:0回答:1

我们有一组使用 REST API 与外部提供商的连接器。我们使用 HttpClient 和 Polly 对端点进行弹性查询。

其中一个提供程序实际上是多个其他提供程序之间的中介,并具有这种特殊行为:当上游提供程序收到太多请求时,我们的中间连接器会返回 HTTP 200 状态。但是,在响应正文中,我们可以分析内容并确定上游提供商正在返回 429 Too Many Requests 状态代码。

我们使用 Circuit Breaker 策略来查询,我们收到 200 但 我们不知道它实际上是 429,直到我们处理消息。该项目是一个大型聚合器,这种解析可能发生在距离调用很远的地方。

有没有一种方法可以修改断路器错误计数器,以便它根据响应正文的内容更改其状态?我们需要能够从代码中的不同位置更改此设置,而不是从 Http 调用本身,而是在之后更改。

我已阅读有关此策略注册表的信息,但我不确定如何在这种情况下应用它。

提前致谢。

.net-core dotnet-httpclient polly circuit-breaker
1个回答
0
投票

在这篇文章中,我假设您正在使用 V7 API。

要装饰什么?

断路器和其他所有策略都足够通用,可以针对任何域使用。换句话说,您不必将断路器与直接 HTTP 调用联系起来。因此,您可以装饰已经部分/全部处理响应正文的方法。

如果您需要直接装饰

HttpClient
,那么解析响应主体并采取相应的行动也是可行的。 在这里您可以找到几个不同的选项来执行此操作。

什么时候休息?

在 V7 的情况下,标准断路器正在计算连续错误。这意味着连续错误计数超过预定义阈值,然后电路断开。

如果您愿意,您还可以手动控制何时打开或关闭。这可以通过

Isolate
Reset
调用
来完成。请记住,在这种情况下,没有自动状态转换。您必须显式调用
Reset
才能从
Isolated
转换回
Closed

© www.soinside.com 2019 - 2024. All rights reserved.