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 | 服务端 | 是 | 支持链路跟踪(长连接)。 |