一个 gRPC 服务器可以 运行 多个相同的 class 服务吗?
Could one gRPC server run multiple same class of service?
考虑以下代码
Server server = ServerBuilder.forPort(8080)
.addService(new AServiceImpl(argA))
.addService(new AServiceImpl(argB))
.build();
我希望此服务器 运行 两个 AService
具有不同的参数,argA
和 argB
,这可能吗?
如果可能,当 AStub
调用该方法时,它会调用哪个服务实例?
我相信这是不可能的,因为每个服务都添加到一个地图,
// Store per-service first, to make sure services are added/replaced atomically.
private final HashMap<String, ServerServiceDefinition> services =
new LinkedHashMap<>();
按名字,
Builder addService(ServerServiceDefinition service) {
services.put(service.getServiceDescriptor().getName(), service);
return this;
}
因此 new AServiceImpl(argB)
将覆盖另一个。
考虑以下代码
Server server = ServerBuilder.forPort(8080)
.addService(new AServiceImpl(argA))
.addService(new AServiceImpl(argB))
.build();
我希望此服务器 运行 两个 AService
具有不同的参数,argA
和 argB
,这可能吗?
如果可能,当 AStub
调用该方法时,它会调用哪个服务实例?
我相信这是不可能的,因为每个服务都添加到一个地图,
// Store per-service first, to make sure services are added/replaced atomically.
private final HashMap<String, ServerServiceDefinition> services =
new LinkedHashMap<>();
按名字,
Builder addService(ServerServiceDefinition service) {
services.put(service.getServiceDescriptor().getName(), service);
return this;
}
因此 new AServiceImpl(argB)
将覆盖另一个。