2016-09-28 3 views
1

Наше общение превышает ограничение по умолчанию grpc-java на размер сообщения:java-grpc: Как увеличить ограничение размера сообщения в ManagedChannel?

Caused by: io.grpc.StatusRuntimeException: INTERNAL: 
Frame size 4555602 exceeds maximum: 4194304. 
If this is normal, increase the maxMessageSize 
in the channel/server builder 

Этот предел может быть увеличен, видно из https://github.com/grpc/grpc-java/issues/917:

Set MaxMessageSize() на строитель/сервер канала.

При попытке осуществить исправление в нашей базе кода, однако, не ясно, для меня, как это сделать, так как не все Channel реализации есть метод maxMessageSize.

В нашем коде используется ManagedChannel. Код установки выглядит следующим образом:

ManagedChannel channel = 
    ManagedChannelBuilder.forAddress(rpcHost, grpcPort) 
         .usePlaintext(true).build(); 

CatalogGrpcServiceGrpc.CatalogGrpcServiceBlockingStub stub = 
    CatalogGrpcServiceGrpc.newBlockingStub(channel); 
CatalogRetrieverGrpcServiceAdapter grpcServiceAdapter = 
    new CatalogRetrieverGrpcServiceAdapter(
      stub, metricRegistry); 

Может быть, я что-то не хватает, но я не могу видеть, как увеличить максимальный размер ManagedChannel. Только у OkHttpChannelBuilder есть (OkHttpChannelBuilder#maxMessageSize).

Вопросы:

  • Как я могу увеличить лимит сообщений с ManagedChannel?
  • Если это невозможно с ManagedChannel, как я могу переписать код для использования другой реализации канала, которая поддерживает увеличение лимита по умолчанию?

ответ

3

Редактировать: Теперь вы можете увеличить лимит непосредственно с ManagedChannelBuilder.

Сегодня вы не можете увеличить предел на ManagedChannelBuilder; вы вынуждены указывать транспортную реализацию, которую хотите использовать.

Так что большинство пользователей будет явно использовать NettyChannelBuilder, а пользователи Android будет использовать OkHttpChannelBuilder:

ManagedChannel channel = 
    NettyChannelBuilder.forAddress(rpcHost, grpcPort) 
         .usePlaintext(true).build(); 

Я создал GitHub issue 2307 отслеживать это.

Смежные вопросы