1. 程式人生 > 其它 >Spring Cloud Apollo 實踐

Spring Cloud Apollo 實踐

接上一篇Windows下安裝Apollo的常見問題,安裝完畢後試著看怎麼來使用一下。

首先到管理頁面建立一個新的應用:

建立成功後會自動跳轉到應用的維護介面,如下圖所示:

新增一個配置資訊來進行後續的驗證,新增成功後右上角彈出提示如需生效請釋出,同時新增的配置項釋出狀態也是未釋出,如下圖中箭頭指向以及框出的區域所示:

接下來隨便找個Spring Cloud的工程,首先在pom中新增Apollo的依賴:

<dependency>
  <groupId>com.ctrip.framework.apollo</groupId>
  <artifactId
>apollo-client</artifactId> <version>1.6.0</version> </dependency>

application.yml中新增Apollo相關的配置資訊以及用來驗證的配置項:

# Apollo 相關配置
app:
  id: spring-cloud-application # 與 Apollo 配置中心中的 AppId 一致

apollo:
  meta: http://localhost:8080 # Apollo 中的 Eureka 註冊中心地址
  #cluster:  # 指定 Apollo 叢集,相同叢集例項使用對應叢集的配置
  #cacheDir:  # 配置快取目錄,網路不可用時任然可提供配置服務
  bootstrap:
    enable: true # 啟用 apollo

env: DEV # 指定環境

date: 20210903

新增對應到配置資訊的配置類:

@Component
@ConfigurationProperties
public class ConfigProperties {

    @Value("${date}")
    private Integer date;

    public Integer getDate() {
        return date;
    }
}

同時在Controller層嘗試獲取該配置資訊:

@RestController
@RequestMapping("/query")
public class ServiceController {

    @Autowired
    
private ConfigProperties configProperties; @GetMapping("/getDate") public Integer getDate() { return configProperties.getDate(); } }

啟動類中添加註解@EnableApolloConfig後便可以啟動驗證:

不過仔細觀察啟動資訊,發現控制檯有輸出如下報錯資訊,應該是由於配置中心之前新增的配置項還未釋出引起的:

2021-09-04 15:47:45.883  WARN 15804 --- [figRepository-1] c.c.f.a.i.RemoteConfigRepository         : Load config failed, will retry in 1 SECONDS. appId: spring-cloud-application, cluster: default, namespaces: application
2021-09-04 15:47:46.893  WARN 15804 --- [figRepository-1] c.c.f.a.i.AbstractConfigRepository       : Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: spring-cloud-application, cluster: default, namespace: application, url: http://160.18.15.177:8080/configs/spring-cloud-application/default/application?ip=160.18.15.177&messages=%7B%22details%22%3A%7B%22spring-cloud-application%2Bdefault%2Bapplication%22%3A1%7D%7D [Cause: [status code: 404] Could not find config for namespace - appId: spring-cloud-application, cluster: default, namespace: application, please check whether the configs are released in Apollo!]

這時我們在Apollo的配置中心對之前建立的配置項進行釋出:

釋出成功後看到客戶端應用的控制檯有如下資訊列印:

2021-09-04 15:50:28.360  INFO 15804 --- [Apollo-Config-1] c.f.a.s.p.AutoUpdateConfigChangeListener : Auto update apollo changed value successfully, new value: 20210904, key: date, beanName: configProperties, field: provider.config.ConfigProperties.date

再看看這時獲取到的日期配置是否改變:

成功重新整理,並且這時如果重新啟動客戶端應用會發現上一次從配置中心同步配置的報錯也不再輸出了。

參考資料:

https://www.cnblogs.com/mrhelloworld/p/apollo1.html