Java GRPC拦截器如何从消息中提取数据并相互传递?
我有2个GRPC拦截器: #1从消息中提取一些数据 #2验证数据,如果无效,则关闭带有错误的调用 拦截器#1如何从消息中提取一些数据,将其放入Java GRPC拦截器如何从消息中提取数据并相互传递?,java,interceptor,grpc,Java,Interceptor,Grpc,我有2个GRPC拦截器: #1从消息中提取一些数据 #2验证数据,如果无效,则关闭带有错误的调用 拦截器#1如何从消息中提取一些数据,将其放入上下文并调用拦截器#2(使用上下文.拦截器调用(上下文,调用,标题,下一步)和修改的上下文实例) 问题是我无法访问覆盖中的消息 <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall( ServerCall<ReqT, RespT> call,
上下文
并调用拦截器#2(使用上下文.拦截器调用(上下文,调用,标题,下一步)
和修改的上下文
实例)
问题是我无法访问覆盖中的消息
<ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
ServerCall<ReqT, RespT> call,
Metadata headers,
ServerCallHandler<ReqT, RespT> next)
private Object msg;
private <ReqT, RespT> ServerCall.Listener<ReqT> interceptCallAfterMessage(
final ServerCall<ReqT, RespT> call,
Metadata headers,
ServerCallHandler<ReqT, RespT> next) {
Context context = Context.current().withValue("msg", msg); // error: msg is not yet extracted !
return Contexts.interceptCall(context, call, headers, next);
}
...
new ForwardingServerCallListener.SimpleForwardingServerCallListener(
interceptCallAfterMessage(call, headers, next)) { // happens first
@Override
public void onMessage(Object message) {
msg = message; // happens second
super.onMessage(message);
}
};