【发布时间】:2019-01-16 10:50:10
【问题描述】:
我们正在使用最新的 Polly 来处理与三个 API 交互的重试和断路器策略。
基本流程是: A) 从产品目录 (API) 读取数据 B) 获取唯一商户令牌 (API) C) 更新商家目录(使用新商品)(API)
由于 Merchant Catalog API(第三方,尚无法解决此问题!)的负载,我们有时会被退回。 Polly 配置为在失败时很好地重试此操作,并且断路器模式样式后退。
我们意识到它一直被触发是因为我们的商家令牌被标记为无效,即使服务器吐出了虚拟对象 - 第三方标记了一个即使在错误时使用的令牌。
阅读this article,这是我们最初基于我们的解决方案的基础,我们正在考虑使用上下文重新加载/刷新身份验证令牌。但是,当该逻辑不在连接(启动)中而是在运行该策略的处理程序中时,我如何拥有一个刷新该令牌的策略,我有点困惑。
var authMerchTokenPolicy = Policy<HttpResponseMessage>
.HandleResult(r => r.StatusCode == 500)
.RetryAsync(1, onRetryAsync: async (ex, i, context) => await RefreshMerchantAuthorization(context["httpClient"]));
上面的例子是不是说明我在启动类中实现了RefreshMerchantAuthorization?
我还没有看到一个具体的例子,这是造成混乱的地方 - 最初的开发者已经离开了,他写了这个(讽刺的是,他的名字叫 Paulie!)
【问题讨论】: