static void Main(string[] args) { var consulClient = new ConsulClient(config => config.Address = new Uri("http://127.0.0.1:8500")); var consulRegistry = new ConsulRegistry(consulClient); using (var server = new Server(new[] { "http://*:1234/" })) { consulRegistry.CreateServiceRegistration("console-host", 1234) .AddHttpCheck( interval: TimeSpan.FromSeconds(10), deregisterFailedAfter: TimeSpan.FromMinutes(2) ) .AddTTLCheck( ttl: TimeSpan.FromSeconds(30), interval: TimeSpan.FromSeconds(10), deregisterFailedAfter: TimeSpan.FromMinutes(2) ) .Register() .Wait(); Console.WriteLine("Registered service in Consul"); server.Start(); } }
public async Task CanLoadUsingConsulConfigurationProvider() { var keyname = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(null)) { await configRegistry.SetKeyAsync($"org/{keyname}/test1", _value1); await configRegistry.SetKeyAsync($"org/{keyname}/test2", _value2); await configRegistry.SetKeyAsync($"org/{keyname}/Nested/test3", _value3); await configRegistry.SetKeyAsync($"org/{keyname}/Nested/test4", _value4); await configRegistry.AddStaticKeyPathAsync($"org"); var config = new ConfigurationBuilder() .AddConfigurationRegistry(configRegistry) .Build(); var simpleSettings = new SimpleSettings(); var configSection = config.GetSection(keyname); configSection.Bind(simpleSettings); Assert.Equal(_value1, simpleSettings.Test1); Assert.Equal(_value2, simpleSettings.Test2); Assert.Equal(_value3, simpleSettings.Nested.Test3); Assert.Equal(_value4, simpleSettings.Nested.Test4); } }
static void Main(string[] args) { var client = new Client(); var consulClient = new ConsulClient(config => config.Address = new Uri("http://consul:8500")); var consulRegistry = new ConsulRegistry(consulClient); consulRegistry.CreateServiceRegistration("console-client", 80) .AddHttpHealthCheckEndpoint(1235) .AddHttpCheck(1235, TimeSpan.FromSeconds(10), TimeSpan.FromMinutes(2)) .Register() .Wait(); while (true) { try { var uri = consulRegistry.Discover("console-host").Result; Console.WriteLine($"Quering URI: {uri}"); var response = client.Get(uri).Result; Console.WriteLine($"Request succeded: {response}"); } catch (Exception ex) { Console.WriteLine($"Request failed: {ex.Message}"); } Thread.Sleep(5 * 1000); } }
public async Task TestSingleKey() { var keyname = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry()) { await configRegistry.SetKeyAsync($"org/{keyname}/test1", _value1); var result = await configRegistry.AddStaticKeyPathAsync($"org/{keyname}/test1", true); Assert.True(result); var value = configRegistry["test1"]; Assert.Equal(_value1, value); } }
public async Task DontPickUpChangesFact() { var keyname = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(null)) { await configRegistry.SetKeyAsync($"org/{keyname}/test1", _value1); var result = await configRegistry.AddStaticKeyPathAsync($"org/{keyname}"); await configRegistry.SetKeyAsync($"org/{keyname}/test1", _value2); await Task.Delay(500); //give some time to sync var firstValue = configRegistry["test1"]; Assert.Equal(_value1, firstValue); } }
public async Task PickUpChangesFact() { var keyid = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(null)) { await configRegistry.SetKeyAsync($"org/{keyid}/test2", _value1); await configRegistry.AddUpdatingPathAsync($"org/{keyid}/"); await Task.Delay(500); Assert.Equal(_value1, configRegistry["test2"]); await configRegistry.SetKeyAsync($"org/{keyid}/test2", _value2); await Task.Delay(500); //give some time to sync Assert.Equal(_value2, configRegistry["test2"]); } }
public async Task GetCallbackForKeyThatIsAdded() { var keyid = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(null)) { var e = new ManualResetEvent(false); configRegistry.AddWatchOnSingleKey("test1", keyValue => e.Set()); await configRegistry.AddUpdatingPathAsync($"org/{keyid}/"); //give it time to register await Task.Delay(1000); await configRegistry.SetKeyAsync($"org/{keyid}/test1", _value2); //Wait for a max of 1 second for the change to notify us Assert.True(e.WaitOne(2000)); } }
public async Task TestRegister() { var keyname = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(null)) { await configRegistry.SetKeyAsync($"org/{keyname}/test1", _value1); await configRegistry.SetKeyAsync($"org/{keyname}/test2", _value2); var result = await configRegistry.AddStaticKeyPathAsync($"org/{keyname}"); Assert.Equal(true, result); var firstValue = configRegistry["test1"]; var secondValue = configRegistry["test2"]; Assert.Equal(_value1, firstValue); Assert.Equal(_value2, secondValue); } }
public async Task CanLoadUsingConsulJsonConfigurationProvider() { var keyname = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(Options.Create <ConsulRegistryConfig>(new ConsulRegistryConfig() { KeyParser = new JsonKeyValueParser() }))) { var settings = new SimpleSettings { Test1 = _value1, Test2 = _value2, Nested = new SimpleNestedSettings { Test3 = _value3, Test4 = _value4 } }; await configRegistry.SetKeyJsonAsync($"org/{keyname}/Settings", settings); var config = new ConfigurationBuilder() .AddConfigurationRegistry(configRegistry) .Build(); //TODO: At the moment require this line after builder as it sets parser. Probably need to rethink this. await configRegistry.AddStaticKeyPathAsync($"org/{keyname}"); var simpleSettings = new SimpleSettings(); var configSection = config.GetSection("Settings"); configSection.Bind(simpleSettings); Assert.Equal(_value1, simpleSettings.Test1); Assert.Equal(_value2, simpleSettings.Test2); Assert.Equal(_value3, simpleSettings.Nested.Test3); Assert.Equal(_value4, simpleSettings.Nested.Test4); } }
public async Task GetCallbackForSpecificKey() { Console.WriteLine(nameof(GetCallbackForSpecificKey)); var keyid = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry()) { var e = new ManualResetEvent(false); configRegistry.AddWatchOnSingleKey("test1", keyValue => e.Set()); await configRegistry.SetKeyAsync($"org/{keyid}/test1", _value1); await configRegistry.AddUpdatingPathAsync($"org/{keyid}/"); await Task.Delay(1000); await configRegistry.SetKeyAsync($"org/{keyid}/test1", _value2); //Wait for a max of 1 second for the change to notify us Assert.True(e.WaitOne(2000)); } }
public async Task GetCallbackForAnyKey() { Console.WriteLine(nameof(GetCallbackForAnyKey)); var keyid = Guid.NewGuid().ToString(); using (var configRegistry = new ConsulRegistry(null)) { await configRegistry.SetKeyAsync($"org/{keyid}/test1", _value1); await configRegistry.AddUpdatingPathAsync($"org/{keyid}"); var e = new ManualResetEvent(false); configRegistry.AddWatchOnEntireConfig(() => e.Set()); //give the registration time to complete registration await Task.Delay(1000); await configRegistry.SetKeyAsync($"org/{keyid}/test1", _value2); //Wait for a max of 1 second for the change to notify us Assert.True(e.WaitOne(2000)); } }