Пример #1
0
        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);
                }
            }
        }
Пример #3
0
 public static void InitRemote(this RemoteConfigs RemoteConfigs)
 {
 }
Пример #4
0
 public ApolloConfigurationProvider(ApolloOptions apolloOptions)
 {
     //由于服务端会hold住请求60秒,所以请确保客户端访问服务端的超时时间要大于60秒。->摘抄自官方文档
     _remoteConfig = RemoteConfigs.GetInstance(apolloOptions);
 }