我们的通讯超出了邮件大小的默认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:
在“频道/服务器”构建器上设置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
无法实现,我如何重写代码以使用支持增加默认限制的其他渠道实施?答案 0 :(得分:3)
修改:您现在可以直接从ManagedChannelBuilder
增加限制。
今天,你不能增加ManagedChannelBuilder
的限制;您被迫指定要使用的传输实现。
因此大多数用户会明确使用NettyChannelBuilder
,Android用户会使用OkHttpChannelBuilder
:
ManagedChannel channel =
NettyChannelBuilder.forAddress(rpcHost, grpcPort)
.usePlaintext(true).build();
我已创建GitHub issue 2307来跟踪此内容。