2016-09-28 6 views
1

우리의 통신은 메시지 크기의 기본 grpc-java 제한을 초과 :java-grpc : ManagedChannel에서 메시지 크기 제한을 늘리는 방법은 무엇입니까?

설정 maxMessageSize을() 채널/서버 빌더에 :

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에서 볼 증가 될 수있다.

우리의 코드베이스에서 수정 프로그램을 구현하기 위해 노력하지만, 모든 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을 사용하고, 안드로이드 사용자는 OkHttpChannelBuilder을 사용 :이 추적 GitHub issue 2307을 만든

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

.