【问题标题】:Curator Service discovery service not being found找不到策展人服务发现服务
【发布时间】:2014-11-17 21:54:11
【问题描述】:

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

【问题讨论】:

  • 同样的问题 - 您错误地使用了 ServiceDiscovery.close()。
  • 错误地使用 ServiceDiscovery.close() 是什么意思?我基本上有同样的问题。

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


【解决方案1】:

好的,我基本上遇到了同样的问题。解决起来很简单,实际上很奇怪。所以你实际上不能关闭你的 ServiceDiscovery 实例,它对我有用。但在这种情况下,他们不应该为 discovery.queryForNames() 给出任何结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 2019-10-16
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多