拦截器组件

GRPC 支持拦截器特性,提高了 GRPC 的灵活性和扩展性。

拦截器使用

服务端

使用 grpcx.Server.ChainUnary 增加额外的服务端拦截器:

c := grpcx.Server.NewConfig()
c.Options = append(c.Options, []grpc.ServerOption{
    grpcx.Server.ChainUnary(
        grpcx.Server.UnaryValidate,
    )}...,
)
s := grpcx.Server.New(c)
user.Register(s)
s.Run()

客户端

使用 grpcx.Client.ChainUnary 增加额外的服务端拦截器:

conn = grpcx.Client.MustNewGrpcClientConn("demo", grpcx.Client.ChainUnary(
    grpcx.Client.UnaryTracing,
))

拦截器列表

框架的 grpcx 组件提供了一系列的常用拦截器,部分内置,部分可选择插拔使用。

拦截器 使用部位 是否内置 描述
UnaryError 客户端 是 支持框架错误处理组件。
UnaryTracing 客户端 是 支持链路跟踪。
StreamTracing 客户端 是 支持链路跟踪(长连接)。
UnaryError 服务端 是 支持框架错误处理组件。
UnaryRecover 服务端 是 支持服务端 panic 自动捕获不崩溃。
UnaryAllowNilRes 服务端 是 支持 nil 的 Res 对象返回。
UnaryValidate 服务端 - 支持框架的自动错误校验,基于结构体标签。需要手动引入。
UnaryTracing 服务端 是 支持链路跟踪。
StreamTracing 服务端 是 支持链路跟踪(长连接)。