首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当创建模式为顺序模式时,ZooKeeper中的监视程序不会触发事件

当创建模式为顺序模式时,ZooKeeper中的监视程序不会触发事件
EN

Stack Overflow用户
提问于 2014-01-24 20:41:45
回答 1查看 1.6K关注 0票数 1

我对ZK并不熟悉,所以不确定这是否属实,但是在我的测试中,我发现了以下内容:

代码语言:javascript
运行
复制
   ZooKeeper zooKeeper1 = new ZooKeeper(
                hosts, // ZooKeeper service hosts
                5000,  // Session timeout in milliseconds
        // Anonymous Watcher Object
      watcher);

其中,观察者是一个监视实例。

如果我这么做的话

代码语言:javascript
运行
复制
zooKeeper1.exists("/test13", watcher);
zooKeeper1.create("/test13", null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);

则即使是在监视对象下定义的也不会触发。

但如果这样做:

代码语言:javascript
运行
复制
zooKeeper1.exists("/test13", watcher);
zooKeeper1.create("/test13", null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);

即使是在监视对象下定义的对象也会被触发。

基本上,如果我使用Sequntial作为CreateMode,则不会触发事件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 08:00:35

问题真的很简单,

当您使用EPHEMERAL_SEQUENTIAL模式创建Znode时,将添加创建的节点与序列号不同的节点,类似于使用名称/zoo/duck创建时的/zoo/duck0000000027

但是另一方面,当您创建节点CreateMode.EPHEMERAL时,则创建该节点的名称与指定的名称相同。

EPHEMERAL_SEQUENTIAL场景中,如果要添加watcher,则在创建之后添加watcher,然后添加节点,

代码语言:javascript
运行
复制
String createdPath = zooKeeper1.create("/test13", null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
zooKeeper1.exists(createdPath, watcher);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21342118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档