GRPC:收到的消息大于最大值(8653851 与 4194304)



问题

我在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)

最新更新