三、客户端用法

3.1 获取默认namespace的配置(application)

  1. Config config = ConfigService.GetAppConfig(); //config instance is singleton for each namespace and is never null
  2. string someKey = "someKeyFromDefaultNamespace";
  3. string someDefaultValue = "someDefaultValueForTheKey";
  4. string value = config.GetProperty(someKey, someDefaultValue);

通过上述的config.GetProperty可以获取到someKey对应的实时最新的配置值。

另外,配置值从内存中获取,所以不需要应用自己做缓存。

3.2 监听配置变化事件

监听配置变化事件只在应用真的关心配置变化,需要在配置变化时得到通知时使用,比如:数据库连接串变化后需要重建连接等。

如果只是希望每次都取到最新的配置的话,只需要按照上面的例子,调用config.GetProperty即可。

  1. Config config = ConfigService.GetAppConfig(); //config instance is singleton for each namespace and is never null
  2. config.ConfigChanged += new ConfigChangeEvent(OnChanged);
  3. private void OnChanged(object sender, ConfigChangeEventArgs changeEvent)
  4. {
  5. Console.WriteLine("Changes for namespace {0}", changeEvent.Namespace);
  6. foreach (string key in changeEvent.ChangedKeys)
  7. {
  8. ConfigChange change = changeEvent.GetChange(key);
  9. Console.WriteLine("Change - key: {0}, oldValue: {1}, newValue: {2}, changeType: {3}", change.PropertyName, change.OldValue, change.NewValue, change.ChangeType);
  10. }
  11. }

3.3 获取公共Namespace的配置

  1. string somePublicNamespace = "CAT";
  2. Config config = ConfigService.GetConfig(somePublicNamespace); //config instance is singleton for each namespace and is never null
  3. string someKey = "someKeyFromPublicNamespace";
  4. string someDefaultValue = "someDefaultValueForTheKey";
  5. string value = config.GetProperty(someKey, someDefaultValue);

3.4 Demo

apollo.net项目中有一个样例客户端的项目:ApolloDemo,具体信息可以参考Apollo开发指南中的2.4 .Net样例客户端启动部分。

注:Apollo .Net客户端开源版目前默认会把日志直接输出到Console,大家可以自己实现Logging相关功能。

详见https://github.com/ctripcorp/apollo.net/tree/master/Apollo/Logging/Spi