今天,團隊里遇到一個問題
Grpc 報錯誤信息 :
??ExceptionMessage:RpcException Status(StatusCode=ResourceExhausted, Detail="Received message larger than max (4314472 vs. 4194304)")
網(wǎng)上找了一會,也找到一些 更改gRPC消息傳輸大小的方法,但沒有.Net的。
參考:https://blog.csdn.net/l491453302/article/details/81904067
參考上面的從gRpc源碼里找到了實現(xiàn)方式
在創(chuàng)建 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 設(shè)最大接收傳輸大小
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)