未找到策展人服务发现服务

时间:2014-09-23 15:45:57

标签: java apache-zookeeper service-discovery apache-curator

我有两个应用程序,一个注册到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”的数组

1 个答案:

答案 0 :(得分:0)

好的,我基本上遇到了同样的问题。解决起来非常简单,而且实际上很奇怪。因此,您实际上无法关闭您的 ServiceDiscovery 实例,该实例对我有用。但是在这种情况下,它们不应为Discovery.queryForNames()提供任何结果。