2016-09-28 78 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看到:

集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跟蹤此。

相關問題