使用grpc-spring-boot-starter时gRPC消息超大小限制,如何增大响应大小?
解决gRPC响应消息超过最大大小限制的问题
这个错误是因为gRPC默认的最大消息大小限制为4MB(4194304字节),而你的响应消息达到了5145024字节,超出了阈值。需要在客户端和服务端分别调整gRPC的消息大小配置:
客户端配置(grpc-spring-boot-starter)
在客户端的配置文件(application.yml或application.properties)中添加以下配置,替换your-service-name为实际的服务端名称:
YAML格式
grpc: client: your-service-name: negotiation-type: plaintext max-inbound-message-size: 10485760 # 10MB,可按需调整
Properties格式
grpc.client.your-service-name.negotiation-type=plaintext grpc.client.your-service-name.max-inbound-message-size=10485760
max-inbound-message-size用于设置客户端允许接收的最大消息大小,单位为字节,根据实际业务需求调整数值即可。
服务端配置(grpc-spring-boot-starter)
服务端也需要同步调整消息大小限制,否则可能无法发送超出默认限制的响应。在服务端的配置文件中添加:
YAML格式
grpc: server: max-inbound-message-size: 10485760 max-outbound-message-size: 10485760
Properties格式
grpc.server.max-inbound-message-size=10485760 grpc.server.max-outbound-message-size=10485760
max-inbound-message-size限制服务端接收的最大请求大小,max-outbound-message-size限制服务端发送的最大响应大小,两者都设置为匹配客户端的数值即可。
代码自定义Stub的配置方式
如果是手动创建ManagedChannel而非依赖自动配置,可通过代码直接设置:
ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 9090) .usePlaintext() .maxInboundMessageSize(10 * 1024 * 1024) // 10MB .build(); YourServiceGrpc.YourServiceBlockingStub stub = YourServiceGrpc.newBlockingStub(channel);
内容的提问来源于stack exchange,提问作者Aniket Gupta
相关产品推荐
相关产品推荐

