Apollo客戶端監聽配置變化、Spring整合
阿新 • • 發佈:2019-01-06
配置釋出後,就能在客戶端獲取到了,以Java為例,獲取配置的示例程式碼如下。Apollo客戶端還支援和Spring整合,更多客戶端使用說明請參見Java客戶端使用指南和.Net客戶端使用指南。
Config config = ConfigService.getAppConfig();
Integer defaultRequestTimeout = 200;
Integer requestTimeout = config.getIntProperty("requestTimeout", defaultRequestTimeout);
通過上述獲取配置程式碼,應用就能實時獲取到最新的配置了。
不過在某些場景下,應用還需要在配置變化時獲得通知,比如資料庫連線的切換等,所以Apollo還提供了監聽配置變化的功能,Java示例如下:
Config config = ConfigService.getAppConfig(); config.addChangeListener(new ConfigChangeListener() { @Override public void onChange(ConfigChangeEvent changeEvent) { for (String key : changeEvent.changedKeys()) { ConfigChange change = changeEvent.getChange(key); System.out.println(String.format( "Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType())); } } });
Apollo和Spring也可以很方便地整合,只需要標註@EnableApolloConfig
後就可以通過@Value
獲取配置資訊:
@Configuration
@EnableApolloConfig
public class AppConfig {}
@Component public class SomeBean { @Value("${request.timeout:200}") private int timeout; @ApolloConfigChangeListener private void someChangeHandler(ConfigChangeEvent changeEvent) { if (changeEvent.isChanged("request.timeout")) { refreshTimeout(); } } }