问题:
我在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
,但显然没有。
3条答案
按热度按时间hs1rzwqc1#
请尝试在您的客户端上更新grpc.MaxCallSendMsgSize(s int)以使您的客户端能够发送更大的消息。这对我很有效。
ni65a41a2#
每个请求都可以传递调用选项。
例如,如果你的包名为
queue
,你的方法名为GetItems
,那么在调用GetItems
时,你应该传入MaxCallRecvMsgSize
选项。Protobuf:
转到:
i34xakig3#
我遇到了同样的问题。下面的DialOption将MaxCallRecvMsgSize设置为math.MaxInt64。但它不起作用。
原因是当客户端调用GRPC函数时,追加的grpc.WithChainUnaryInterceptor(chains...)会首先执行,客户端会跳过grpc. WithDefaultCallOptions。因此,您应该在链中设置MaxCallRecvMsgSize或删除grpc.WithChainUnaryInterceptor。