我们有一组使用 REST API 与外部提供商的连接器。我们使用 HttpClient 和 Polly 对端点进行弹性查询。
其中一个提供程序实际上是多个其他提供程序之间的中介,并具有这种特殊行为:当上游提供程序收到太多请求时,我们的中间连接器会返回 HTTP 200 状态。但是,在响应正文中,我们可以分析内容并确定上游提供商正在返回 429 Too Many Requests 状态代码。
我们使用 Circuit Breaker 策略来查询,我们收到 200 但 我们不知道它实际上是 429,直到我们处理消息。该项目是一个大型聚合器,这种解析可能发生在距离调用很远的地方。
有没有一种方法可以修改断路器错误计数器,以便它根据响应正文的内容更改其状态?我们需要能够从代码中的不同位置更改此设置,而不是从 Http 调用本身,而是在之后更改。
我已阅读有关此策略注册表的信息,但我不确定如何在这种情况下应用它。
提前致谢。
在这篇文章中,我假设您正在使用 V7 API。
断路器和其他所有策略都足够通用,可以针对任何域使用。换句话说,您不必将断路器与直接 HTTP 调用联系起来。因此,您可以装饰已经部分/全部处理响应正文的方法。
如果您需要直接装饰
HttpClient
,那么解析响应主体并采取相应的行动也是可行的。 在这里您可以找到几个不同的选项来执行此操作。
在 V7 的情况下,标准断路器正在计算连续错误。这意味着连续错误计数超过预定义阈值,然后电路断开。
Isolate
和 Reset
调用 来完成。请记住,在这种情况下,没有自动状态转换。您必须显式调用 Reset
才能从 Isolated
转换回 Closed
。