java-grpc:如何增加 ManagedChannel 中的消息大小限制?
java-grpc: How to increase the message size limit in a ManagedChannel?
我们的通信超过了消息大小的默认 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
这个限制可以提高,见https://github.com/grpc/grpc-java/issues/917:
Set maxMessageSize() on the Channel/Server builder.
然而,当尝试在我们的代码库中实施修复时,我并不清楚该怎么做,因为并非所有 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
不可行,我如何重写代码以使用另一个支持增加默认限制的通道实现?
编辑:您现在可以直接从 ManagedChannelBuilder
增加限制。
今天,您无法提高 ManagedChannelBuilder
的限制;您必须指定要使用的传输实现。
所以大多数用户会明确使用 NettyChannelBuilder
,而 Android 用户会使用 OkHttpChannelBuilder
:
ManagedChannel channel =
NettyChannelBuilder.forAddress(rpcHost, grpcPort)
.usePlaintext(true).build();
我创建了 GitHub issue 2307 来跟踪这个。
我们的通信超过了消息大小的默认 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
这个限制可以提高,见https://github.com/grpc/grpc-java/issues/917:
Set maxMessageSize() on the Channel/Server builder.
然而,当尝试在我们的代码库中实施修复时,我并不清楚该怎么做,因为并非所有 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
不可行,我如何重写代码以使用另一个支持增加默认限制的通道实现?
编辑:您现在可以直接从 ManagedChannelBuilder
增加限制。
今天,您无法提高 ManagedChannelBuilder
的限制;您必须指定要使用的传输实现。
所以大多数用户会明确使用 NettyChannelBuilder
,而 Android 用户会使用 OkHttpChannelBuilder
:
ManagedChannel channel =
NettyChannelBuilder.forAddress(rpcHost, grpcPort)
.usePlaintext(true).build();
我创建了 GitHub issue 2307 来跟踪这个。