Beispiel #1
0
        public static async Task <string> CreateSequentialPath_(this ZooKeeper client,
                                                                string path, byte[] data = null, bool persistent = true)
        {
            __check_path__(path);

            var mode = persistent ?
                       CreateMode.PERSISTENT_SEQUENTIAL :
                       CreateMode.EPHEMERAL_SEQUENTIAL;

            //创建序列节点
            var p = await client.CreateNode_(path, mode, data);

            //取path最后一个路径
            var no = p.SplitZookeeperPath().LastOrDefault();

            return(no ?? throw new Exception("未能创建序列节点"));
            //return p.Substring(path.Length);
        }
Beispiel #2
0
        public static async Task EnsurePersistentPath(this ZooKeeper client, string path)
        {
            __check_path__(path);

            if (await client.ExistAsync_(path))
            {
                return;
            }

            var sp = path.SplitZookeeperPath();
            var p  = string.Empty;

            foreach (var itm in sp)
            {
                p += $"/{itm}";
                if (!await client.ExistAsync_(p))
                {
                    await client.CreateNode_(p, CreateMode.PERSISTENT);
                }
            }
        }