コード例 #1
0
 private void GetConfigData()
 {
     try
     {
         var configNotification = _remoteConfig.GetConfigNotification();
         var namespaceNames     = configNotification.Select(m => m.NamespaceName).ToArray();
         var configs            = _remoteConfig.GetConfigsByNamespaces(namespaceNames, out var hasChanged);
         //如果配置有变更则更新配置到内存和本地文件
         if (hasChanged)
         {
             var configsArray  = configs.SelectMany(m => m.Configurations).ToArray();
             var newConfigData = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);
             Array.ForEach(configsArray, m => { newConfigData[m.Key] = m.Value; });
             Data = newConfigData;
             LocalConfigs.Set(base.Data);
             OnReload();
         }
         EnsureExistsLocalConfigFile();
     }
     catch (Exception ex)
     {
         Logger?.LogError(ex, "Apollo定时轮询核心方法异常");
         EnsureExistsLocalConfigFile();
         GetConfigFromLocalConfigFile();
     }
 }
コード例 #2
0
        /// <summary>
        /// 读取本地缓存配置,用于Apollo挂掉情况
        /// </summary>
        private void GetConfigFromLocalConfigFile()
        {
            var configs = LocalConfigs.Get();

            Data = configs;
            OnReload();
            Logger?.LogCritical("Apollo拉取远程配置失败,当前已命中本地缓存配置文件。请及时联系运维人员,修复Apollo");
        }
コード例 #3
0
 /// <summary>
 /// 确保本地配置文件存在
 /// </summary>
 private void EnsureExistsLocalConfigFile()
 {
     if (!LocalConfigs.ExistsCacheFile())
     {
         Logger?.LogWarning("Apollo本地缓存配置文件不存在,即将创建");
         LocalConfigs.Set(base.Data);
     }
 }
コード例 #4
0
ファイル: LocalConfigs.cs プロジェクト: Zoranner/WorkBalancer
        public static LocalConfigs CreateInstance()
        {
            if (_Singleton != null)
            {
                return(_Singleton);
            }

            lock (_SingletonLock)
            {
                if (_Singleton != null)
                {
                    return(_Singleton);
                }

                _Singleton = new LocalConfigs();
            }

            return(_Singleton);
        }