【发布时间】:2017-06-27 06:00:24
【问题描述】:
我在一个 gRPC 服务上绑定了 2 个 ServerInterceptor。
在第一个拦截器中,ServerCall 已经关闭,但第二个拦截器仍然参与其中。
那么如何在第一个拦截器中关闭 ServerCall 时跳过其余的拦截器?
第一个拦截器:
public class FirstInterceptor implements ServerInterceptor {
@Override
public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
ServerCall<ReqT, RespT> call,
Metadata headers,
ServerCallHandler<ReqT, RespT> next) {
if(...){
...
return Contexts.interceptCall(context, call, headers, next);
}else{
...
call.close(Status.UNAUTHENTICATED.withDescription("@FST_INTCP"),GrpcUtil.getMetadataWithErrMsg(e));
return next.startCall(new ForwardingServerCall.SimpleForwardingServerCall<ReqT, RespT>(call) {}, headers);
}
}
}
【问题讨论】:
标签: java server interceptor grpc