コード例 #1
0
        private async Task <int> GetOrCreateLeasesNode(string leasesPath, int maxLeases)
        {
            try
            {
                var count = await _zkClient.GetDateIntAsync(leasesPath);

                if (count != maxLeases)
                {
                    throw new ApplicationException("maxLeases与Zookeeper中现有Semaphore节点数据不一致");
                }
                return(count);
            }
            catch (KeeperException.NoNodeException)
            {
                // 创建Leases节点
                var data = Encoding.UTF8.GetBytes(maxLeases.ToString());
                await _zkClient.RecursionCreateAsync(leasesPath, data, CreateMode.PERSISTENT);
            }

            return(maxLeases);
        }