我们正在Azure Service Fabric上构建一个主要由无状态微服务组成的应用程序。服务结构的一个工件是命名服务返回服务的 实例 的端点。
如果客户端无法与该服务通信,则需要返回命名服务,获取另一个实例的端点并重试。
由于我不希望每个开发人员都这样做,我为此创建了DelegatingHandler
。但是,命名服务使用字符串来标识服务。将此标识符设置为处理程序上的属性会使其具有状态,因此无法再共享生成的HttpClient
对象来调用不同的服务。
因为处理程序对HttpClient
类是私有的,所以我无法更改现有处理程序的属性。
另一个令人讨厌的事情是HttpClient在使用相对URL时强制使用BaseAddress属性。
那么委托处理程序是否应该用于任何需要状态的东西(比如服务发现)?有没有更好的方法来解决这个问题?