我想使用gRPC同时向多个服务器提交相同的数据。
我查看了greeterAsyn2 c ++示例: https://github.com/grpc/grpc/blob/v1.8.x/examples/cpp/helloworld/greeter_async_client2.cc
从示例中:为了创建1个频道,您可以这样做:
GreeterClient greeter(grpc::CreateChannel(
"localhost:50051", grpc::InsecureChannelCredentials()));
因为这会为频道创建存根:
class GreeterClient {
public:
explicit GreeterClient(std::shared_ptr<Channel> channel)
: stub_(Greeter::NewStub(channel)) {}
}
我可以使用
提交数据greeter.SayHello("hello world");
但是,如果我想使用2个不同的频道向2个不同的服务器提交数据呢?
如果我只想添加另一个名为greeter2的GreeterClient对象:
GreeterClient greeter2(grpc::CreateChannel(
"10.0.0.3:9008", grpc::InsecureChannelCredentials()));
尝试将数据提交到第二台服务器时出现分段错误:
greeter2.SayHello("hello world");
答案 0 :(得分:1)
你在做什么似乎没关系,我需要看看堆栈跟踪,看看出了什么问题。
将频道视为服务的抽象数据管道,如果您想与多个服务器通信,只需创建多个频道并分别发送它们。