Пример #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="zkPath"></param>
 public void Remove(string zkPath)
 {
     _queue.Enqueue(() =>
     {
         //zookeeper在存在子节点时,不允许直接删除父节点,所以需要先删除子节点
         ZooKeeper.RemoveTmpChildNode(zkPath);
         ZooKeeper.Delete(zkPath, -1);
     });
 }
Пример #2
0
 /// <summary>
 /// 添加或者设置data
 /// </summary>
 /// <param name="zkPath"></param>
 /// <param name="data"></param>
 public void AddOrSetData(string zkPath, byte[] data)
 {
     _queue.Enqueue(() =>
     {
         var stat = ZooKeeper.Exists(zkPath, false);
         if (stat != null)
         {
             //先删除子节点,再更新值保证不会出现客户端已经更新完并新增了节点,而服务端还没删完的情况
             ZooKeeper.RemoveTmpChildNode(zkPath);
             ZooKeeper.SetData(zkPath, data, -1);
         }
         else
         {
             ZooKeeper.CreateWithPath(zkPath, data, Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
         }
     });
 }