问题:
在grpc中接收消息时,我会收到此错误:
rpc error: code = ResourceExhausted desc = grpc: received message larger than max (8653851 vs. 4194304)
我尝试了什么:
我给出了增加要接收的消息的大小的选项,但是它仍然给出了相同的错误,这意味着最大大小的设置不起作用:
size := 1024 * 1024 * 12
opts = append(opts, grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(size)))
conn, err := grpc.Dial(address, opts...)
评论:
默认限制是1024 * 1024 * 4 = 4194304
,它显示在错误消息中。我原以为这个限制会增加到1024 * 1024 * 12 = 12582912
,但显然没有。
发布于 2019-10-26 13:21:30
请尝试更新客户端上的Grpc.MaxCallSendMsgSize(国际),以使客户端发送更大的消息。这对我有用。
发布于 2020-07-06 07:29:39
每个请求都可以传递调用选项。
例如,如果您的包名为queue
,而您的方法被称为GetItems
,那么在调用GetItems
时将传入MaxCallRecvMsgSize
选项。
Protobuf:
package queue;
service Queue {
rpc GetItems (Request) returns (Items) {
}
}
去:
conn, err := grpc.Dial(address, opts...)
c := queue.NewQueueClient(s.Conn)
maxSizeOption := grpc.MaxCallRecvMsgSize(32*10e6)
items, err := c.GetItems(ctx, &queue.Request{}, maxSizeOption)
https://stackoverflow.com/questions/55362342
复制相似问题