作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Apache Curator 进行服务发现,并使用 PathChildrenCache
在添加/更新/删除服务时监听事件。
PathChildrenCache pathCache = new PathChildrenCache(client, "/directory", true);
pathCache.getListenable().addListener(new PathChildrenCacheListener() {
@Override
public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
if(event.getType() == PathChildrenCacheEvent.Type.CHILD_ADDED) {
System.out.println("Added");
}else if(event.getType() == PathChildrenCacheEvent.Type.CHILD_UPDATED) {
System.out.println("Updated");
}else if(event.getType() == PathChildrenCacheEvent.Type.CHILD_REMOVED) {
System.out.println("Removed");
}
}
}
pathCache.start();
当我通过 org.apache.curator.x.discovery.ServiceDiscovery
注册服务时,我得到了一个附加事件。但是当我取消注册服务时,我没有收到已删除的事件。
我如何正确地监听服务事件?
最佳答案
我最终按如下方式使用了 ServiceCacheListener
(问题是您需要为每个要观看的服务创建一个 ServiceCache
实例):
ServiceCache<String> serviceCache = serviceDiscovery.serviceCacheBuilder().name("my-service").build();
serviceCache.addListener(new ServiceCacheListener() {
@Override
public void stateChanged(CuratorFramework client, ConnectionState newState)
{
log.debug("State changed");
}
@Override
public void cacheChanged()
{
log.debug("Cache changed");
}
}, Executors.newSingleThreadExecutor());
serviceCache.start();
关于java - 未收到 PathChildrenCache 上的删除事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29779811/
我使用 Apache Curator 进行服务发现,并使用 PathChildrenCache 在添加/更新/删除服务时监听事件。 PathChildrenCache pathCache = new
本文整理了Java中com.spotify.helios.servicescommon.coordination.ZooKeeperClient.pathChildrenCache()方法的一些代码示
我是一名优秀的程序员,十分优秀!