13

问题

在 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但显然它没有。

4

2 回答 2

7

请尝试在您的客户端上更新grpc.MaxCallSendMsgSize(s int)以使您的客户端能够发送更大的消息。这对我有用。

于 2019-10-26T13:21:30.777 回答
2

每个请求都可以传递调用选项。

例如,如果您的包被调用queue并且您的方法被调用GetItems,那么您将在MaxCallRecvMsgSize调用时传入选项GetItems

原型:

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)
于 2020-07-06T07:29:39.327 回答