HttpClient DelegatingHandlers保持状态

时间:2016-05-02 00:50:06

标签: c# azure httpclient microservices azure-service-fabric

我们正在Azure Service Fabric上构建一个主要由无状态微服务组成的应用程序。服务结构的一个工件是命名服务返回服务的 实例 的端点。

如果客户端无法与该服务通信,则需要返回命名服务,获取另一个实例的端点并重试。

由于我不希望每个开发人员都这样做,我为此创建了DelegatingHandler。但是,命名服务使用字符串来标识服务。将此标识符设置为处理程序上的属性会使其具有状态,因此无法再共享生成的HttpClient对象来调用不​​同的服务。

因为处理程序对HttpClient类是私有的,所以我无法更改现有处理程序的属性。

另一个令人讨厌的事情是HttpClient在使用相对URL时强制使用BaseAddress属性。

那么委托处理程序是否应该用于任何需要状态的东西(比如服务发现)?有没有更好的方法来解决这个问题?

0 个答案:

没有答案