Maison > développement back-end > Golang > le corps du texte

Chaîne d'intercepteur de client GRPC personnalisé/DialOptions

PHPz
Libérer: 2024-02-14 08:27:10
avant
872 Les gens l'ont consulté

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

Les intercepteurs clients GRPC personnalisés et DialOptions sont des outils très utiles lors de la communication sur un réseau. Ces outils peuvent aider les développeurs à ajouter des fonctionnalités et une logique de traitement supplémentaires au client GRPC pour répondre à des besoins spécifiques. Dans cet article, l'éditeur PHP Banana vous présentera comment utiliser ces outils pour personnaliser et optimiser le comportement du client GRPC. En utilisant ces intercepteurs et DialOptions, les développeurs peuvent facilement mettre en œuvre un traitement personnalisé des demandes et des réponses, une gestion des connexions et d'autres fonctions, améliorant ainsi l'évolutivité et les performances du système. Explorons ensemble ces fonctionnalités puissantes !

Contenu de la question

Je souhaite lier certains intercepteurs DialOptions/côté client. Mais pour une raison quelconque, seul le dernier intercepteur personnalisé est appelé :

CB5C9B4EECA35A2077063ECDCD731918

J'ai ajouté TransportCredentials pour qu'il n'y ait pas d'erreur au démarrage (concernant le manque de sécurité du transport).

Qu'est-ce qui me manque ici ?

Solution de contournement

Vous devez lier l'intercepteur (client | serveur) :

Voir grpc.WithChainUnaryInterceptor

Par exemple :

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)
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal