1. 程式人生 > >Apollo配置中心-Api方式與Java方式測試

Apollo配置中心-Api方式與Java方式測試

ons 通過 ins src 標識 client ppi 自己 clu

[toc]

這個部分來演示

  • 創建一個項目並添加測試的key值:timeout=8000 ,batch=9000
  • 通過提供一個token的方式,利用api獲取配置信息
  • 創建一個spring boot項目,引入apollo架包,讀取配置
  • 通過變跟配置文件,看java項目是不是實時更新配置

創建Apollo項目

  1. 點擊添加項目
    技術分享圖片
  2. 輸入項目信息,註意應用ID後面也是應用讀取的唯一標識
    技術分享圖片
  3. 選擇DEV環境,新增配置, 我這裏有測試過,所以dev環境多了個gzywtest-c1集群,默認情況下,點擊環境都是選擇default配置

    技術分享圖片

  4. 點擊發布,這樣dev環境的配置信息就生效了,接下來來生成一個token測試

技術分享圖片


利用Apollo Api測試接口

  1. 點擊管理員工具-開發平臺授權管理

技術分享圖片

  1. 輸入必要的信息,點擊創建,生成token

技術分享圖片

  1. 獲取集群下所有Namespace信息接口
    ···
    curl -H ‘Authorization:ab5a901872858535afb48f4da1f7c1c5be522de5‘ \
    -H ‘Content-Type:application/json;charset=UTF-8‘ \
    http://192.168.1.1:8080/openapi/v1/envs/dev/apps/900001/clusters/default/namespaces/application
    ···
    返回結果如下
    
    {
    "appId": "900001",
    "clusterName": "default",
    "namespaceName": "application",
    "comment": "default app namespace",
    "format": "properties",
    "isPublic": false,
    "items": [{
    "key": "redis_host",
    "value": "127.0.0.1",
    "dataChangeCreatedBy": "apollo",
    "dataChangeLastModifiedBy": "apollo",
    "dataChangeCreatedTime": "2018-07-04T16:55:54.000+0800",
    "dataChangeLastModifiedTime": "2018-07-04T16:55:54.000+0800"
    }, {
    "key": "timeout",
    "value": "8000",
    "comment": "",
    "dataChangeCreatedBy": "apollo",
    "dataChangeLastModifiedBy": "apollo",
    "dataChangeCreatedTime": "2018-07-09T11:07:24.000+0800",
    "dataChangeLastModifiedTime": "2018-07-09T11:13:36.000+0800"
    }, {
    "key": "batch",
    "value": "9000",
    "comment": "",
    "dataChangeCreatedBy": "apollo",
    "dataChangeLastModifiedBy": "apollo",
    "dataChangeCreatedTime": "2018-07-09T11:20:02.000+0800",
    "dataChangeLastModifiedTime": "2018-07-09T15:38:02.000+0800"
    }],
    "dataChangeCreatedBy": "apollo",
    "dataChangeLastModifiedBy": "apollo",
    "dataChangeCreatedTime": "2018-07-04T16:11:00.000+0800",
    "dataChangeLastModifiedTime": "2018-07-04T16:11:00.000+0800"
    }
* 結構url的參數規則如下:

![](http://i2.51cto.com/images/blog/201807/13/b33c8b06860ad718981228618a33138f.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
*  Api更多文檔參考,參考 https://github.com/ctripcorp/apollo/wiki/Apollo%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0

---

### Java的接入方式
*  參考 https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

其實官方的源包下已經包含一個apollo-demo的項目,如果你在看了上一篇的部署apollo項目後,應該記得腳本最後有一個上傳本地架包到maven的步驟,這個就是如果想進行java搭建必須的操作,需要將編譯好的架包上傳到私有源上去. 因為我實在沒調通官方的demo項目,所以根據官方的demo項目自己創建一個新的項目來調試,簡單講述下實現的代碼,後面提供下載

1.   打開  http://start.spring.io/  ,輸入簡單的選項,點擊生成項目後下載到本地
![](http://i2.51cto.com/images/blog/201807/13/79fe86478a3f2a122ebd541f9d395e0b.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

1.  引入eclipse

 ![](http://i2.51cto.com/images/blog/201807/13/1e63406fb89585f1625fbfb94bf732d9.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    * 我這裏引入過,所以不能再引入,正常輸入目錄後,eclipse掃描後點擊finish就可以引入

 ![](http://i2.51cto.com/images/blog/201807/13/a5c9912039dba831f7684776a6dadae5.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

1. 在pom.xml中添加下列包
```xml
<!--  引入的包#####################  -->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>0.11.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-core</artifactId>
            <version>0.11.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>25.1-jre</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
  1. 將官方apollo-demo下的 com.ctrip.framework.apollo.demo 拷貝到我們的demo下,這裏僅測試官方推薦的java讀取方式,刪除多余的文件,最後的結構如下

    技術分享圖片

  2. 添加運行的環境選擇,這裏用DEV環境
    
    #我的是window下測試,所以在
  3. C:\opt\settings\server.properties 添加內容 : ENV=dev
  4. 在eclipse 的 META-INF目錄下創建一個 app.properties文件添加內容 : app.id=900001

  5. 在 pom.xml上右鍵選擇run - maven install ,然後在 AnnotationApplication 右鍵run - spring boot app

    技術分享圖片

技術分享圖片

  1. 運行的輸出應該能看到如下輸出
    技術分享圖片

    * 在console回車會看到

    技術分享圖片

更新配置,測試是否實時更新配置

  1. 從portal修改dev環境的timeout值變成3000
    技術分享圖片
  2. 發布配置
    技術分享圖片

  3. 可以看到console輸出中,timeout已經變更了值

    技術分享圖片

    • 更多的java接入教程,參考https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

Apollo配置中心-Api方式與Java方式測試