概要
gRPCで4MB以上のデータ転送をしようとすると
rpc error: code = ResourceExhausted desc = grpc: received message larger than max (xxxxxxx vs. 4194304)
のようなエラーが出ます。この上限はデフォルト値なのでgrpc.MaxRecvMsgSize()やgrpc.MaxCallSendMsgSize()を使うことで変更可能ですが、ドキュメントでも以下のように
Protocol Buffers are not designed to handle large messages. As a general rule of thumb, if you are dealing in messages larger than a megabyte each, it may be time to consider an alternate strategy.
ref: Techniques | Protocol Buffers | Google Developers
と、1メッセージがメガバイトを超えるのであれば別の手段で転送することを考えるべき、と言っています。
なので
- gRPCにおける各RPC方式の実装方法【Client streaming RPC】 - Carpe Diem
- gRPCにおける各RPC方式の実装方法【Bidirectional streaming RPC】 - Carpe Diem
のようにストリームで送るのが良さそうです。
続きを読む