Beispiel #1
0
        public static string Get(string env, string dataId, string group, string tenant)
        {
            GetConfigRequest getConfigRequest = new GetConfigRequest();

            getConfigRequest.DataId = dataId;
            getConfigRequest.Group  = group;
            getConfigRequest.Tenant = tenant;

            string config;

            try
            {
                var response = getConfigRequest.DoRequest();
                config = response.Content;
                LocalConfigInfoProcessor.SaveSnapshot(env, dataId, group, tenant, config);
            }
            catch (Exception e)
            {
                LogUtil.Error("获取配置异常,开始从本地获取配置, message: " + e.Message);
                config = LocalConfigInfoProcessor.GetFailover(env, dataId, group, tenant);
                config = string.IsNullOrEmpty(config) ? LocalConfigInfoProcessor.GetSnapshot(env, dataId, group, tenant) : config;
            }

            return(config);
        }
Beispiel #2
0
        public void RunOnceTest()
        {
            string config = Nacos.init().runOnce();

            Assert.IsTrue(!string.IsNullOrEmpty(config));
            Assert.IsTrue(LocalConfigInfoProcessor.GetSnapshotFile(NacosConfig.Env, NacosConfig.DataId, NacosConfig.Group, NacosConfig.Tenant).Exists);
        }
        public void SnapshotFileSaveTest()
        {
            string path        = AppDomain.CurrentDomain.BaseDirectory;
            var    localConfig = new LocalConfigInfoProcessor(path);

            string content = localConfig.GetFailover("tms", "rongyun", "default", "core");

            Assert.Equal(string.Empty, content);

            localConfig.SaveSnapshot("tms", "rongyun", "default", "core", "rongyuntest");

            localConfig.SaveSnapshot("tms", "zgsign", "default", "core", "zgsigntest");

            content = localConfig.GetSnapshot("tms", "rongyun", "default", "core");

            Assert.Equal("rongyuntest", content);

            content = localConfig.GetSnapshot("tms", "zgsign", "default", "core");

            Assert.Equal("zgsigntest", content);

            localConfig.SaveSnapshot("tms", "zgsign", "default", "core", "");
            content = localConfig.GetSnapshot("tms", "zgsign", "default", "core");

            Assert.Equal(string.Empty, content);

            Directory.Delete(Path.Combine(path, LocalConfigInfoProcessor.SnapshotPath), true);
        }
Beispiel #4
0
 public NacosConfigService(ConfigParam config, IHttpClientFactory factory)
 {
     _namespace = config.Namespace;
     _http      = new FastHttp(factory, config);
     _agent     = new ServerHttpAgent(config, _http);
     _localConfigInfoProcessor = new LocalConfigInfoProcessor(config.LocalFileRoot);
     _worker = new ClientWorker(config, _agent, _configFilterChainManager, _localConfigInfoProcessor);
 }
Beispiel #5
0
        public ClientWorker CreateWorker(MockHttpMessageHandler handler)
        {
            _httpAgent = new ServerHttpAgent(_config, new FastHttp(FakeHttpClientFactory.Create(handler.ToHttpClient()), _config));

            _filter = new ConfigFilterChainManager();
            _localConfigInfoProcessor = new LocalConfigInfoProcessor(_config.LocalFileRoot);

            return(new ClientWorker(_config, _httpAgent, _filter, _localConfigInfoProcessor));
        }
Beispiel #6
0
        public static void Listener(string env, string dataId, string group, string config, string tenant = "")
        {
            int loop = 0;

            do
            {
                loop++;

                ListenerConfigRequest listenerConfigRequest = new ListenerConfigRequest();
                listenerConfigRequest.DataId     = dataId;
                listenerConfigRequest.Group      = group;
                listenerConfigRequest.Tenant     = tenant;
                listenerConfigRequest.ContentMD5 = Md5Util.Md5(config);

                try
                {
                    var response = listenerConfigRequest.DoRequest();
                    if (!string.IsNullOrEmpty(response.Content))
                    {
                        // 配置发生了变化
                        config = Get(env, dataId, group, tenant);
                        LogUtil.Info("found changed config: " + config);

                        // 保存最新的配置
                        LocalConfigInfoProcessor.SaveSnapshot(env, dataId, group, tenant, config);
                    }
                }
                catch (Exception e)
                {
                    LogUtil.Error("listener请求异常, e: " + e.Message);
                    // 短暂休息会儿
                    Thread.Sleep(500);
                }
                LogUtil.Info("listener loop count: " + loop);
            } while (true);
        }
Beispiel #7
0
 public CacheDataTest()
 {
     _localConfigInfoProcessor = new LocalConfigInfoProcessor(AppDomain.CurrentDomain.BaseDirectory);
     _configFilterChainManager = new ConfigFilterChainManager();
 }