问题:
我在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
但显然没有。
请尝试更新 grpc。MaxCallSendMsgSize(s int) 使客户端能够发送更大的消息。 这对我有用。
调用选项可以随每个请求一起传递。
例如,如果您的包称为queue
并且您的方法称为GetItems
,那么您将在调用GetItems
时传入MaxCallRecvMsgSize
选项。
普罗托布夫:
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)