访问在同一个上运行的 gRPC 服务时服务器,无需为每个服务建立单独的连接。单个 grpc.ClientConn 可用于访问所有服务。
要共享连接,请使用所需端点创建一个 grpc.ClientConn 并将其传递给pb.New*Client() 函数用于您想要使用的每个服务。这允许它们利用相同的连接。
<code class="go">cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure()) if err != nil { log.Fatal(err) } c1 := pb.NewSubscriberServiceClient(cc) c2 := pb.NewDropperServiceClient(cc)</code>
虽然您可以创建一个接口来组合多个服务的客户端 gRPC 功能,但pb.go 中生成的代码处理所有基本操作。仅特定自定义逻辑需要实现新功能。
对于具有唯一方法名称的服务,您可以定义一个方便的结构来捆绑其客户端:
<code class="go">type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient }</code>
通过一个访问多个 gRPC 服务单连接简化了客户端实现并提高了代码可维护性。
以上是如何通过单个连接访问多个gRPC服务?的详细内容。更多信息请关注PHP中文网其他相关文章!