public void Init()
        {
            _logger.LogInformation($"开始监听zk<jodis/{_zksetting.zkProxyDir}>节点");
            zkhelper = new ZooKeeperHelper(_zksetting.zkAddr, _zksetting.zkProxyDir, _zksetting.zkSessionTimeout,
                                           (nodes) =>
            {
                _logger.LogInformation($"新增节点");
                foreach (var item in nodes)
                {
                    _logger.LogInformation($"新增节点:{item.Addr}");
                }

                Task.Run(async() => await CheckCCAsync());
            },
                                           (nodes) =>
            {
                _logger.LogInformation($"删除节点");
                foreach (var item in nodes)
                {
                    _logger.LogInformation($"删除节点:{item.Addr}");
                }

                Task.Run(async() => await CheckCCAsync());
            });
        }
示例#2
0
        public static Task <bool> DeleteAppSettingByIdAsync(int id)
        {
            return(Task.Run(() =>
            {
                using (var db = new ConfigCenterConnection())
                {
                    var appSetting = db.AppSetting.SingleOrDefault(x => x.Id == id);
                    db.AppSetting.Remove(appSetting);
                    db.SaveChanges();
                    var app = db.App.FirstOrDefault(x => x.Id == appSetting.AppId);
                    if (app != null)
                    {
                        app.Version = DateTime.Now.ToString("yyyyMMddHHmmss");
                        db.Entry(app).State = EntityState.Modified;
                        db.SaveChanges();

                        //更新zookeeper的值
                        var path = ZooKeeperHelper.ZooKeeperRootNode + "/" + app.AppId;
                        if (!ZooKeeperHelper.Exists(path))
                        {
                            ZooKeeperHelper.Create(path, null);
                        }
                        ZooKeeperHelper.SetData(path, app.Version, -1);
                    }
                    return true;
                }
            }));
        }
示例#3
0
        public static Task SaveAppSettingAsync(AppSettingDto appSettingDto)
        {
            return(Task.Run(() =>
            {
                using (var db = new ConfigCenterConnection())
                {
                    var appSetting = Mapper.Map <AppSettingDto, AppSetting>(appSettingDto);
                    db.AppSetting.Add(appSetting);
                    db.SaveChanges();

                    var app = db.App.FirstOrDefault(x => x.Id == appSettingDto.AppId);
                    if (app != null)
                    {
                        app.Version = DateTime.Now.ToString("yyyyMMddHHmmss");
                        db.Entry(app).State = EntityState.Modified;
                        db.SaveChanges();

                        //更新zookeeper的值
                        var path = ZooKeeperHelper.ZooKeeperRootNode + "/" + app.AppId;
                        if (!ZooKeeperHelper.Exists(path))
                        {
                            ZooKeeperHelper.Create(path, null);
                        }
                        ZooKeeperHelper.SetData(path, app.Version, -1);
                    }
                }
            }));
        }
示例#4
0
 protected void Application_Start()
 {
     ObjectMapping.Init();
     if (!ZooKeeperHelper.Exists(ZooKeeperHelper.ZooKeeperRootNode))
     {
         ZooKeeperHelper.Create(ZooKeeperHelper.ZooKeeperRootNode, null);
     }
     new AppHost().Init();
 }
示例#5
0
        public void GetZKJodis()
        {
            var zkhelper = new ZooKeeperHelper(log, "192.168.4.79:2181", "codis-mango");

            var result = zkhelper._zk.client.GetChildrenAsync("/jodis");

            result.Wait();
            var resData = result.Result.ToList();

            Assert.Contains("codis-mango", resData);
        }
        public void TestMethod1()
        {
            zkhelper = new ZooKeeperHelper(zkAddr, zkProxyDir, zkSessionTimeout,
                                           (nodes) =>
            {
                foreach (var item in nodes)
                {
                    Console.WriteLine($"新增节点:{item.Addr}");
                }
            },
                                           (nodes) =>
            {
                foreach (var item in nodes)
                {
                    Console.WriteLine($"删除节点:{item.Addr}");
                }
            });

            var pools = zkhelper.pools;
        }
示例#7
0
        public static void SaveAppSetting(AppSettingDto appSettingDto)
        {
            var appSetting = Mapper.Map <AppSettingDto, AppSetting>(appSettingDto);

            appSetting.Save();

            var app = App.SingleOrDefault(appSettingDto.AppId);

            if (app != null)
            {
                app.Version = DateTime.Now.ToString("yyyyMMddHHmmss");
                app.Save();

                //更新zookeeper的值
                var path = ZooKeeperHelper.ZooKeeperRootNode + "/" + app.AppId;
                if (!ZooKeeperHelper.Exists(path))
                {
                    ZooKeeperHelper.Create(path, null);
                }
                ZooKeeperHelper.SetData(path, app.Version, -1);
            }
        }
        /// <summary>
        /// 构建一个监听zk变化自动更新的连接池
        /// </summary>
        /// <returns></returns>
        public RedisPool Build()
        {
            #region zk配置获取及建立监听
            validate();
            if (zkhelper != null)
            {
                zkhelper.Dispose();
            }
            zkhelper = new ZooKeeperHelper(zkAddr, zkProxyDir, zkSessionTimeout,
                                           (nodes) =>
            {
                CreateManager();
            },
                                           (nodes) =>
            {
                CreateManager();
            });

            #endregion zk配置获取及建立监听

            CreateManager();

            return(this);
        }