当接收的数据量超过了8M时, grpc报错如下
rpc error: code = ResourceExhausted desc = grpc: received message larger than max (8388613 vs. 8388608)
由上错误可知,最大接收数据大小是8M字节左右, 而有时候我们又需要传输大于此数据量的数据怎么办呢?
在GRPC库中发现了如下两个函数
func MaxCallRecvMsgSize(bytes int) CallOption {
return MaxRecvMsgSizeCallOption{MaxRecvMsgSize: bytes}
}
func MaxCallSendMsgSize(bytes int) CallOption {
return MaxSendMsgSizeCallOption{MaxSendMsgSize: bytes}
}
单位是字节, 参数类型是int, 也就是最大支持发送接收为2G-1个字节
既可以接收大小 grpc.MaxCallRecvMsgSize(1024 * 1024 * 20)
可扩展发送大小 grpc.MaxCallSendMsgSize(1024*1024*20)
使用方式, 在客户端调用接口,可扩展参数加入上述函数进行设置 即可
另外就是在客户端连接的时候进行设置
conn, err := grpc.Dial(host, grpc.WithInsecure(), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024 * 1024 * 8)))