/// <summary> /// /// </summary> /// <param name="zkPath"></param> public void Remove(string zkPath) { _queue.Enqueue(() => { //zookeeper在存在子节点时,不允许直接删除父节点,所以需要先删除子节点 ZooKeeper.RemoveTmpChildNode(zkPath); ZooKeeper.Delete(zkPath, -1); }); }
/// <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); } }); }