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)
Другие вопросы по тегам