存取在同一個上執行的 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中文網其他相關文章!