Beim Zugriff auf gRPC-Dienste, die auf demselben ausgeführt werden Server ist es nicht erforderlich, für jeden Dienst separate Verbindungen herzustellen. Ein einziger grpc.ClientConn kann für den Zugriff auf alle Dienste verwendet werden.
Um eine Verbindung freizugeben, erstellen Sie einen grpc.ClientConn mit dem gewünschten Endpunkt und übergeben Sie ihn an den pb.New*Client()-Funktionen für jeden Dienst, den Sie verwenden möchten. Dadurch können sie dieselben Verbindungen nutzen.
<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>
Obwohl Sie eine Schnittstelle erstellen könnten, um clientseitige gRPC-Funktionen für mehrere Dienste zu kombinieren, ist die Der generierte Code in pb.go übernimmt alle wesentlichen Vorgänge. Die Implementierung neuer Funktionen ist nur für bestimmte benutzerdefinierte Logik erforderlich.
Für Dienste mit eindeutigen Methodennamen können Sie eine praktische Struktur definieren, um ihre Clients zu bündeln:
<code class="go">type SubscriberDropper struct { pb.SubscriberServiceClient pb.DropperServiceClient }</code>
Zugriff auf mehrere gRPC-Dienste über a Eine einzelne Verbindung vereinfacht die clientseitige Implementierung und verbessert die Wartbarkeit des Codes.
Das obige ist der detaillierte Inhalt vonWie greife ich über eine einzige Verbindung auf mehrere gRPC-Dienste zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!