YangYouji's WebSite

gRPC 参数设置 – 大小限制 重连时间

gRPC是google开发的RPC框架。使用gRPC可以方便的在程序间传递protobuf序列化后的数据,而不必考虑数据量大小,断开重连等比较难处理的问题。C++下的使用方法可以参考https://grpc.io/docs/languages/cpp/。下面记录下一些gRPC设置的小技巧

gRPC默认传输的大小限制为4M,如果要传输更大的,需要进行设置。

C++方法:
在ServerBuilder中进行设置

ServerBuilder builder;
builder.SetMaxReceiveMessageSize(100*1024*1024);
builder.SetMaxSendMessageSize(100*1024*1024);

客户端在ChannelArguments中进行设置

grpc::ChannelArguments channel_args;
channel_args.SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, 100*1024*1024);
channel = grpc::CreateCustomChannel("127.0.0.1:5000",grpc::InsecureChannelCredentials(),channel_args);

C#方法:
在ChannelOption中设置

var channeloptions = new List<ChannelOption>();
            channeloptions.Add(new ChannelOption(ChannelOptions.MaxReceiveMessageLength,100*1024*1024));
Server server = new Server(channeloptions) {
                Services = { VTestService.BindService(client) },
                Ports = { new ServerPort("0.0.0.0", Port, ServerCredentials.Insecure) }
            };

gRPC的客户端有断线重连功能,其会根据重连的次数来相应的改变尝试重连的时间间隔。如果需要重连的频率高一点可以进行设置

C++方法:

grpc::ChannelArguments channel_args;
channel_args.SetInt(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS, 2 * 1000);//2秒一次
channel = grpc::CreateCustomChannel("127.0.0.1:5000",grpc::InsecureChannelCredentials(),channel_args);

其他一些特别的设置可以在gPRC的网站中查找https://grpc.github.io/grpc/cpp/group__grpc__arg__keys.html

退出移动版