今天,团队里遇到一个问题
Grpc 报错误信息 :
ExceptionMessage:RpcException Status(StatusCode=ResourceExhausted, Detail="Received message larger than max (4314472 vs. 4194304)")
网上找了一会,也找到一些 更改gRPC消息传输大小的方法,但没有.Net的。
参考:https://blog.csdn.net/l491453302/article/details/81904067
参考上面的从gRpc源码里找到了实现方式
在创建 Server的时候,使用ChannelOption来更改传输大小就可以了。
#region Consts
/// <summary>4MB(4 * 1024 * 1024) * N, 4MB是Grpc默认传输大小。</summary>
private const int GRPC_MAX_RECEIVE_MESSAGE_LENGTH = (4 * 1024 * 1024) * 3;
#endregion
#region Set Channel Options
var channelOptions = new List<ChannelOption>();
// add max message length option 设最大接收传输大小
channelOptions.Add(new ChannelOption(ChannelOptions.MaxReceiveMessageLength, GRPC_MAX_RECEIVE_MESSAGE_LENGTH));
#endregion
Server server = new Server(channelOptions)
{
Services = { RoleService},
Ports = { new ServerPort(Host, Prot, ServerCredentials.Insecure) }
};
另外 ChannelOptions还可以做很多的工作 ,可以参考:
https://github.com/grpc/grpc/blob/master/src/csharp/Grpc.Core/ChannelOptions.cs
Grpc的全局日志也可以用GrpcEnvironment.SetLogger(ILogger customLogger)
网友评论