我有两个应用程序,一个将自身注册到zookeeper服务,另一个尝试列出已注册的服务。
但是,当我列出它们时,我没有找到任何服务
我按如下方式注册该服务
private ServiceDiscovery<InstanceDetails> getDiscovery() {
return ServiceDiscoveryBuilder.builder(InstanceDetails.class)
.basePath(Config.basePath)
.client(curatorFramework)
.serializer(jacksonInstanceSerializer)
.build();
}
public void advertiseAvailability() {
try {
ServiceDiscovery<InstanceDetails> discovery = getDiscovery();
discovery.start();
discovery.registerService(getInstance());
discovery.close();
System.out.println("Advertised");
} catch (Exception e) {
throw Throwables.propagate(e);
}
}当我尝试获取服务时,我有以下几点:
public Collection<ServiceInstance<InstanceDetails>> getWorkers(String serviceName) {
Collection<ServiceInstance<InstanceDetails>> instances;
try {
instances = discovery.queryForInstances(serviceName);
} catch (Exception e) {
throw Throwables.propagate(e);
}
return instances;
}注意,discovery.queryForNames()返回一个包含我的serviceName和"zookeeper“的数组。
发布于 2019-03-11 01:32:05
好吧,我基本上也有同样的问题。它很容易解决,实际上也很奇怪。所以你实际上不能关闭你的ServiceDiscovery实例,这对我是有效的。但在这种情况下,它们不应该给出discovery.queryForNames()的任何结果。
https://stackoverflow.com/questions/25999381
复制相似问题