Как обработать ошибку RESOURCE EXHAUSTED в вызовах API
Я использую Java Ledger Bindings для получения пакетов из книги через сервис Package и получаю следующую ошибку:
RESOURCE_EXHAUSTED: gRPC message exceeds maximum size
Мое приложение основано на примере приложения Ping-Pong, а модель daml содержит более 300 файлов daml.
Исключение происходит вокруг следующего блока кода:
DamlLedgerClient client = DamlLedgerClient.forHostWithLedgerIdDiscovery(host, port, Optional.empty());
client.connect();
PackageClient packageService = client.getPackageClient();
Flowable<String> packagesIds = packageService.listPackages();
1 ответ
Решение
Размер сообщения ограничен ManagedChannel
используется для подключения к серверу gRPC. Чтобы увеличить его, вы должны построить и настроить ManagedChannel
для gRPC самостоятельно и передать его конструктору DamlLedgerClient
,
ManagedChannel channel =
ManagedChannelBuilder
.forAddress(host,port)
.usePlaintext()
.maxInboundMessageSize(9999999)
.build();
DamlLedgerClient client = new DamlLedgerClient(Optional.empty(), channel);