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); }
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); } } }