private static void ReadRemConfig(string[] path) { string data = path.Read(); if (string.IsNullOrEmpty(data)) { RemoteConfigs = new RemoteConfigs(); path.Write(JsonConvert.SerializeObject(RemoteConfigs)); } else { try { RemoteConfigs = JsonConvert.DeserializeObject <RemoteConfigs>(data); } catch (Exception ex) { Logger.Add(Enum.LogType.Debug, $"未能成功初始化“{path[1].Replace(".json", "")}”的配置信息", ex); RemoteConfigs = new RemoteConfigs(); path.Write(JsonConvert.SerializeObject(RemoteConfigs)); } } if (RemoteConfigs.Count == 0) { RemoteConfigs.InitRemote(); } }
/// <summary> /// 获取配置 /// </summary> /// <param name="appIDs"></param> /// <param name="service"></param> /// <param name="cluster"></param> public void GetConfig(string[] appIDs, ServiceConfig service, string cluster = "default") { RemoteConfigs remoteConfigs = new RemoteConfigs(); foreach (var appID in appIDs) { var data = GetConfigFromServer(service.HomePageUrl, appID, _apolloConfig.Env); if (data != null) { if (data.Configurations != null && data.Configurations.Any()) { ConfigCollection.Set(_apolloConfig.Env, data); } else { ConfigCollection.Remove(_apolloConfig.Env, data.Cluster, data.AppId); } //cluster = data.Cluster; 移除本行代码,避免灰度异常 if (PathHelper.Create(_cachePath)) { var fileName = FileHelper.GetCacheName(_cachePath, _apolloConfig.Env, data.Cluster, data.AppId); FileHelper.Write(fileName, data); } } else { data = GetConfigFromLocal(appID, cluster); } } }
public static void InitRemote(this RemoteConfigs RemoteConfigs) { }
public ApolloConfigurationProvider(ApolloOptions apolloOptions) { //由于服务端会hold住请求60秒,所以请确保客户端访问服务端的超时时间要大于60秒。->摘抄自官方文档 _remoteConfig = RemoteConfigs.GetInstance(apolloOptions); }