private static void ZookeeperConfigCenterManager_OnRequestZookpeerBefor(ZookeeprtServer zookeeprtServe, Node node, Group group, Field field) { string path = node.BaseUrl + group.Name + "/" + field.Name; Console.WriteLine("当前Zookeeper路径:" + path); ("当前Zookeeper路径:" + path).WriteToLog(); }
/// <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); } }
/// <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(""); } }
internal void RequestZookpeerBefor(ZookeeprtServer zookeeprtServe, Node node, Group group, Field field) { OnRequestZookpeerBefor?.Invoke(zookeeprtServe, node, group, field); }