gRPC由于需要用工具生成代码实现,可开发性不是很高,在扩展这方面不是很友好
最近研究了下,进行了扩展,不需要额外的工具生成,直接使用默认Grpc.Tools生成的代理类即可
相关源码在文章底部
客户端目标:能配置consul地址和服务名称,在调用client时能正确请求到真实的服务地址
在调用方法时,能使用Polly策略重试,超时,和熔断
查看gRPC生成的代码,可以看到Client实例化有有两个构造方法,以测试为例
/// <summary>Creates a new client for Greeter</summary> /// <param>The channel to use to make remote calls.</param> public GreeterClient(grpc::ChannelBase channel) : base(channel) { } /// <summary>Creates a new client for Greeter that uses a custom <c>CallInvoker</c>.</summary> /// <param>The callInvoker to use to make remote calls.</param> public GreeterClient(grpc::CallInvoker callInvoker) : base(callInvoker) { }