Как обработать ошибку 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);
Другие вопросы по тегам