有没有一种方法可以拦截双向流gRPC服务中的每条消息,我想记录接收每条消息的时间。对于不被调用的连续消息,ServerInterceptor的“ interceptCall”仅在第一条消息上被调用。
public class TimigInterceptor implements ServerInterceptor {
public static final Context.Key<Long> START_TIME = Context.key("startTime");
@Override
public <ReqT, RespT> Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers,
ServerCallHandler<ReqT, RespT> next) {
Context ctx = Context.current().withValue(START_TIME, System.currentTimeMillis());
return Contexts.interceptCall(ctx, call, headers, next);
}
}