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

Verketten Sie den benutzerdefinierten GRPC-Client-Interceptor/DialOptions

PHPz
Freigeben: 2024-02-14 08:27:10
nach vorne
895 Leute haben es durchsucht

链自定义 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)
    }
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage