gRPC: 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
но ясно, что это не так.
0 ответов
Попробуйте обновить grpc.MaxCallSendMsgSize(s int) на вашем клиенте, чтобы ваш клиент мог отправлять сообщения большего размера. Это сработало для меня.
Варианты звонка могут быть переданы с каждым запросом.
Например, если ваш пакет называется 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)