Пример #1
0
        /// <summary>
        /// 正则匹配并替换
        /// </summary>
        /// <param name="zookeeprtServer">zookeeprtServe配置信息</param>
        /// <param name="node">zookeeprt节点根目录</param>
        /// <param name="group">zookeeprt节点子目录</param>
        /// <param name="field">zookeeprt节点Key</param>
        private void MatchReplace(ZookeeprtServer zookeeprtServer, Node node, ZooKeeper.Model.Group group, Field field)
        {
            try
            {
                string dirKey     = field.Tpl + "*" + field.Path;//生成字典Key
                string tplContent = "";
                if (string.IsNullOrEmpty(tplContent) && !contents.ContainsKey(dirKey))
                {
                    tplContent = LoadFileContent(field.Tpl); //加载模版文件内容
                    contents.Add(dirKey, tplContent);        //添加内容到字典
                }
                tplContent = contents[dirKey];

                var sw = new Stopwatch();//监测Zookeeper查询Path节点耗时
                sw.Start();
                string value = GetZookeeperField(zookeeprtServer, node, group, field);
                sw.Stop();
                ZookeeperConfigCenterManagerEvents.ZookpeerWriteLog(string.Format("Zookeeper查询完毕,查询用时:{0}毫秒", (sw.ElapsedMilliseconds)), LogerType.Info);
                contents[dirKey] = Regex.Replace(tplContent, @"\${" + field.Name.Trim() + @"\}", value);//替换配置文件内容
            }
            catch (Exception e)
            {
                ZookeeperConfigCenterManagerEvents.ZookpeerWriteLog("正则匹配并替换异常:\r\n" + e.Message + e.StackTrace, LogerType.Error);
            }
        }
Пример #2
0
        /// <summary>
        /// 私有,初始化Zookeeper,根据path和版本查询value
        /// </summary>
        /// <param name="zookeeprtServe">zookeeprtServe配置信息</param>
        /// <param name="node">zookeeprt节点根目录</param>
        /// <param name="groupr">zookeeprt节点子目录</param>
        /// <param name="field">zookeeprt节点Key</param>
        /// <returns></returns>
        private string GetZookeeperField(ZookeeprtServer zookeeprtServe, Node node, ZooKeeper.Model.Group group, Field field)
        {
            //请求Zookpeer前事件
            zookeeperConfigCenterManagerEvents.RequestZookpeerBefor(zookeeprtServe, node, group, field);
            string path = node.BaseUrl + group.Name + "/" + field.Name;//组合Zookpeer路径

            try
            {
                string result = "";
                result = configer.GetStringData(path);//Zookpeer中根据path查询value
                //请求Zookpeer后事件
                zookeeperConfigCenterManagerEvents.RequestZookpeerAfter(result);
                return(result);
            }
            catch (Exception e)
            {
                zookeeperConfigCenterManagerEvents.RequestZookpeerError(e);
                ZookeeperConfigCenterManagerEvents.ZookpeerWriteLog("读取Zookeeper异常:\r\n" + e.Message + e.StackTrace + "\n" + path, LogerType.Error);
                return("");
            }
        }