1. 程式人生 > >Apollo客戶端監聽配置變化、Spring整合

Apollo客戶端監聽配置變化、Spring整合

配置釋出後,就能在客戶端獲取到了,以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();
        }
    }
}