java-grpc:如何增加 ManagedChannel 中的消息大小限制?

Phi*_*ßen 3 java grpc grpc-java

我们的通信超出了默认的grpc-java消息大小限制:

Caused by: io.grpc.StatusRuntimeException: INTERNAL:
Frame size 4555602 exceeds maximum: 4194304.
If this is normal, increase the maxMessageSize
in the channel/server builder
Run Code Online (Sandbox Code Playgroud)

该限制可以增加,请参见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);
Run Code Online (Sandbox Code Playgroud)

也许我遗漏了一些东西,但我看不到如何增加ManagedChannel. 只有OkHttpChannelBuilder拥有它 ( OkHttpChannelBuilder#maxMessageSize)。

问题:

  • 如何使用 增加消息限制ManagedChannel
  • 如果无法使用ManagedChannel,我该如何重写代码以使用另一个支持增加默认限制的通道实现?

Eri*_*son 5

编辑:您现在可以直接从ManagedChannelBuilder.

今天,你不能增加限制ManagedChannelBuilder;您被迫指定要使用的传输实现。

所以大多数用户会明确使用NettyChannelBuilder,Android 用户会使用OkHttpChannelBuilder

ManagedChannel channel = 
   NettyChannelBuilder.forAddress(rpcHost, grpcPort)
                        .usePlaintext(true).build();
Run Code Online (Sandbox Code Playgroud)

我创建了GitHub 问题 2307来跟踪这个。