Heim >Backend-Entwicklung >Golang >Verketten Sie den benutzerdefinierten GRPC-Client-Interceptor/DialOptions

Verketten Sie den benutzerdefinierten GRPC-Client-Interceptor/DialOptions

PHPz
PHPznach vorne
2024-02-14 08:27:10897Durchsuche

链自定义 GRPC 客户端拦截器/DialOptions

Benutzerdefinierte GRPC-Client-Interceptors und DialOptions sind sehr nützliche Tools bei der Kommunikation über ein Netzwerk. Diese Tools können Entwicklern dabei helfen, dem GRPC-Client zusätzliche Funktionalität und Verarbeitungslogik hinzuzufügen, um spezifische Anforderungen zu erfüllen. In diesem Artikel stellt der PHP-Editor Banana vor, wie Sie mit diesen Tools das Verhalten des GRPC-Clients anpassen und optimieren können. Durch die Verwendung dieser Interceptoren und DialOptions können Entwickler problemlos benutzerdefinierte Anforderungs- und Antwortverarbeitung, Verbindungsverwaltung und andere Funktionen implementieren und so die Skalierbarkeit und Leistung des Systems verbessern. Lassen Sie uns gemeinsam diese leistungsstarken Funktionen erkunden!

Frageninhalt

Ich möchte einige DialOptions/clientseitige Abfangjäger verlinken. Aber aus irgendeinem Grund heißt nur der neueste Custom-Interceptor:

CB5C9B4EECA35A2077063ECDCD731918

Ich habe TransportCredentials hinzugefügt, damit beim Start kein Fehler auftritt (bezüglich fehlender Transportsicherung).

Was fehlt mir hier?

Workaround

Sie müssen den (Client | Server) Interceptor verknüpfen:

Siehe grpc.WithChainUnaryInterceptor

Zum Beispiel:

func main() {
    myInt1 := func(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
        print("testInterceptor invoked")
        return invoker(ctx, method, req, reply, cc, opts...)
    }
    myInt2 := func(ctx context.Context, method string, req, reply any, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
        print("testInterceptor2 invoked")
        return invoker(ctx, method, req, reply, cc, opts...)
    }
    opts := []grpc.DialOption{
        grpc.WithTransportCredentials(insecure.NewCredentials()),
        grpc.WithChainUnaryInterceptor(
            myInt1,
            myInt2,
        ),
    }

    _, err := grpc.DialContext(context.Background(), "my-adress:443", opts...)
    if err != nil {
        log.Fatal(err)
    }
}

Das obige ist der detaillierte Inhalt vonVerketten Sie den benutzerdefinierten GRPC-Client-Interceptor/DialOptions. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen