Как обрабатывать ошибку RESOURCE EXHAUSTED в вызовах API

Я использую привязки Java Ledger Bindings для получения пакетов из реестра через службу пакетов и получаю следующую ошибку:

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();

person dsun    schedule 22.01.2019    source источник


Ответы (1)


Размер сообщения ограничен ManagedChannel, используемым для подключения к серверу gRPC. Чтобы увеличить его, вы должны сами сконструировать и настроить ManagedChannel для gRPC и передать его конструктору DamlLedgerClient.

ManagedChannel channel =
    ManagedChannelBuilder
    .forAddress(host,port)
    .usePlaintext()
    .maxInboundMessageSize(9999999)
    .build();
DamlLedgerClient client = new DamlLedgerClient(Optional.empty(), channel);
person bame    schedule 23.01.2019