Extension Points
ServerInterceptor
io.grpc.ServerInterceptor
is an interceptor to intercept the lifecycle of a gRPC call on the server side.
Register a ServerInterceptor
for logging all incoming messages:
@Bean
class LoggingServerInterceptor implements ServerInterceptor {
private static final Logger log = LoggerFactory.getLogger(LoggingServerInterceptor.class);
@Override
public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {
return new ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT>(next.startCall(call, headers)) {
@Override
public void onMessage(ReqT message) {
log.info("Received message: {}", message);
super.onMessage(message);
}
};
}
}
Multiple ServerInterceptor
will be called in the order defined by the Spring Bean's order, from smallest to largest.
GrpcServerCustomizer
GrpcServerCustomizer
customize the gRPC Server
before it is created.
Register a GrpcServerCustomizer
to set the maximum inbound message size for the gRPC server:
@Bean
class MaxInboundMessageSizeGrpcServerCustomizer implements GrpcServerCustomizer {
@Override
public void customize(ServerBuilder<?> serverBuilder) {
serverBuilder.maxInboundMessageSize(16 * 1024 * 1024);
}
}