/// <summary> /// 获取并转换Consul配置信息 /// </summary> /// <param name="reloading"></param> /// <param name="source"></param> /// <returns></returns> public async Task <IDictionary <string, string> > GetConfig(bool reloading, IConsulConfigurationSource source) { QueryResult <KVPair> kvPair = await this.GetKvPairs(source.ServiceKey, source.QueryOptions, source.CancellationToken).ConfigureAwait(false); switch (kvPair?.Response) { case null when !source.Optional: { if (!reloading) { throw new FormatException("Error_InvalidService" + source.ServiceKey); } return(new Dictionary <string, string>()); } case null: throw new FormatException("Error_ValueNotExist" + source.ServiceKey); default: this.UpdateLastIndex(kvPair); return(JsonConfigurationFileParser.Parse(source.ServiceKey, new MemoryStream(kvPair.Response.Value))); } }
/// <summary> /// 获取并转换Consul配置信息 /// </summary> /// <param name="reloading"></param> /// <param name="source"></param> /// <returns></returns> public async Task <IDictionary <string, string> > GetConfig(bool reloading, IConsulConfigurationSource source) { try { QueryResult <KVPair> kvPair = await this.GetKvPairs(source.ServiceKey, source.QueryOptions, source.CancellationToken).ConfigureAwait(false); if ((kvPair?.Response == null) && !source.Optional) { if (!reloading) { throw new FormatException(Resources.Error_InvalidService(source.ServiceKey)); } return(new Dictionary <string, string>()); } if (kvPair?.Response == null) { throw new FormatException(Resources.Error_ValueNotExist(source.ServiceKey)); } this.UpdateLastIndex(kvPair); return(JsonConfigurationFileParser.Parse(source.ServiceKey, new MemoryStream(kvPair.Response.Value))); } catch (Exception exception) { throw exception; } }
internal ConsulWatchExceptionContext( Exception exception, int consecutiveFailureCount, IConsulConfigurationSource source) { Exception = exception; ConsecutiveFailureCount = consecutiveFailureCount; Source = source; }
public ConsulConfigurationProvider(IConsulConfigurationSource source) { _source = source; _url = new Uri(source.Url, $"v1/kv/{_source.Path}"); _httpClient = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip }, true); }
public Load() { _source = new ConsulConfigurationSource("Test", default(CancellationToken)) { Parser = _configParserMock.Object, ReloadOnChange = false }; _consulConfigProvider = new ConsulConfigurationProvider(_source, _consulConfigClientMock.Object); }
private void ConsulClientOptions(IConsulConfigurationSource source) { source.ConsulConfigurationOptions = config => { config.Address = new Uri(_configuration["ServiceConfig:serviceDiscoveryAddress"]); config.Datacenter = _configuration["ServiceConfig:DataCenter"]; //config.Token = ""; }; source.ReloadOnChange = true; source.Optional = true; }
static void ConfigureConsulOptions(IConsulConfigurationSource options, ConsulClientConfiguration consulClientConfiguration) { options.Optional = false; options.ConsulConfigurationOptions = x => { x.Address = consulClientConfiguration.Address; x.Datacenter = consulClientConfiguration.Datacenter; x.Token = consulClientConfiguration.Token; x.WaitTime = consulClientConfiguration.WaitTime; }; options.ReloadOnChange = false; }
public ConsulConfigurationProvider( IConsulConfigurationSource source, IConsulClientFactory consulClientFactory) { if (source.Parser == null) { throw new ArgumentNullException(nameof(source.Parser)); } _source = source; _consulClientFactory = consulClientFactory; _cancellationTokenSource = new CancellationTokenSource(); }
public Reload() { _source = new ConsulConfigurationSource("Test", default(CancellationToken)) { Parser = _configParserMock.Object, ReloadOnChange = true }; _firstChangeToken = new ConfigurationReloadToken(); _consulConfigClientMock .SetupSequence(ccc => ccc.Watch("Test", It.IsAny <Action <ConsulWatchExceptionContext> >(), default(CancellationToken))) .Returns(_firstChangeToken) .Returns(new ConfigurationReloadToken()); _consulConfigProvider = new ConsulConfigurationProvider( _source, _consulConfigClientMock.Object); }
public ConsulConfigurationProvider(IConsulConfigurationSource source, IConsulConfigurationClient consulConfigClient, string serviceKey) { this.consulConfigClient = consulConfigClient; this.source = source; this.serviceKey = serviceKey; if (source.ReloadOnChange) { ChangeToken.OnChange( () => this.consulConfigClient.Watch(this.source.Key, this.source.CancellationToken), async() => { await this.DoLoad(true).ConfigureAwait(false); this.OnReload(); }); } }
public ConsulConfigurationProvider(IConsulConfigurationSource source, ConsulConfigurationParser configurationParser) { this.configurationParser = configurationParser; this.source = source; if (source.ReloadOnChange) { ChangeToken.OnChange( () => this.configurationParser.Watch(this.source.ServiceKey, this.source.CancellationToken), async() => { await this.configurationParser.GetConfig(true, source).ConfigureAwait(false); Thread.Sleep(source.ReloadDelay); this.OnReload(); }); } }
public ConsulConfigurationProvider(IConsulConfigurationSource source, ConsulConfigurationParser configurationParser) { this.configurationParser = configurationParser; this.source = source; if (source.ReloadOnChange) { ChangeToken.OnChange( () => this.configurationParser.Watch(this.source.ServiceKey, this.source.CancellationToken), async() => { Console.WriteLine("--------- SyZero.Consul:检测到配置变更 => 开始重新加载配置"); await this.configurationParser.GetConfig(true, source).ConfigureAwait(false); Thread.Sleep(source.ReloadDelay); this.Load(); Console.WriteLine("--------- SyZero.Consul:检测到配置变更 => 完成"); this.OnReload(); }); } }
public ConsulConfigurationProvider(IConsulConfigurationSource source, IConsulConfigurationClient consulConfigClient) { if (source.Parser == null) { throw new ArgumentNullException(nameof(source.Parser)); } _consulConfigClient = consulConfigClient; _source = source; if (source.ReloadOnChange) { ChangeToken.OnChange( () => _consulConfigClient.Watch(_source.OnWatchException), async() => { await DoLoad(reloading: true); OnReload(); }); } }
public ConsulConfigurationProviderTests() { _kvEndpoint = new Mock <IKVEndpoint>(MockBehavior.Strict); var consulClient = new Mock <IConsulClient>(MockBehavior.Strict); consulClient .Setup(cc => cc.KV) .Returns(_kvEndpoint.Object); consulClient .Setup(cc => cc.Dispose()); var consulClientFactory = new Mock <IConsulClientFactory>(MockBehavior.Strict); consulClientFactory .Setup(ccf => ccf.Create()) .Returns(consulClient.Object); _parser = new Mock <IConfigurationParser>(MockBehavior.Strict); _source = new ConsulConfigurationSource("Test") { Parser = _parser.Object }; _provider = new ConsulConfigurationProvider( _source, consulClientFactory.Object); }
internal ConsulWatchExceptionContext(IConsulConfigurationSource source, Exception exception) { Exception = exception; Source = source; }
public ConsulConfigurationClient(IConsulConfigurationSource consulConfigurationSource) { this.consulConfigurationSource = consulConfigurationSource; }
public ConsulConfigurationParser(IConsulConfigurationSource consulConfigurationSource) { this.consulConfigurationSource = consulConfigurationSource; }
public ConsulConfigurationClient(IConsulClientFactory consulClientFactory, IConsulConfigurationSource source) { _consulClientFactory = consulClientFactory; _source = source; }
public ConsulClientFactory(IConsulConfigurationSource consulConfigSource) { _consulConfigSource = consulConfigSource; }
public static ConsulClient CreateConsulClient(this IConsulConfigurationSource _consulConfigSource) { return(new ConsulClient(_consulConfigSource.ConsulConfigurationOptions, _consulConfigSource.ConsulHttpClientOptions, _consulConfigSource.ConsulHttpClientHandlerOptions)); }
internal ConsulLoadExceptionContext(IConsulConfigurationSource source, Exception exception) { Source = source; Exception = exception; }