中间件

基本定义

和web中间件概念一致,grpc中间件分为普通中间件针对普通服务,和流中间件针对流服务,我们对其进行了封装

接口

普通中间件类型

type UnaryServerInterceptor func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (resp interface{}, err error)

流中间件类型

type StreamServerInterceptor func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error

案例

普通中间件

func RecoveryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
   defer func() {
      if e := recover(); e != nil {
         debug.PrintStack()
         err = status.Errorf(codes.Internal, "Panic err: %v", e)
      }
   }()

   return handler(ctx, req)
}

流中间件

最后更新于

这有帮助吗?