我有两个应用程序,一个注册到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”的数组
答案 0 :(得分:0)
好的,我基本上遇到了同样的问题。解决起来非常简单,而且实际上很奇怪。因此,您实际上无法关闭您的 ServiceDiscovery 实例,该实例对我有用。但是在这种情况下,它们不应为Discovery.queryForNames()提供任何结果。