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); }
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); }
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); }
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)); }
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); }
public CacheDataTest() { _localConfigInfoProcessor = new LocalConfigInfoProcessor(AppDomain.CurrentDomain.BaseDirectory); _configFilterChainManager = new ConfigFilterChainManager(); }