登录
首页 >  Golang >  Go问答

创建自定义的GRPC客户端拦截器和DialOptions

来源:stackoverflow

时间:2024-02-03 18:00:51 123浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《创建自定义的GRPC客户端拦截器和DialOptions》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我想链接一些 DialOptions/客户端拦截器。但由于某种原因,只会调用最新的自定义拦截器:

CB5C9B4EECA35A2077063ECDCD731918

我添加了 TransportCredentials,因此启动时不会出现错误(关于缺少传输安全性)。

我在这里缺少什么?


正确答案


您必须链接(客户端|服务器)拦截器:

参见grpc.WithChainUnaryInterceptor

例如:

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)
    }
}

理论要掌握,实操不能落!以上关于《创建自定义的GRPC客户端拦截器和DialOptions》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>