說明:
1、這個示例應該算是一個靜態遷移,也就是說配置更新后要重啟應用才能體現更新,目的是展示現有配置的如何遷移。
2、如果要實現更新配置后動態去更新而不重啟應用的操作,比如ZK地址和數據庫地址這些,下一篇再詳細實踐。
3、下面的示例是基於ZK實現的服務注冊與發現,而只通過實現服務提供者的那部分,不實現服務消費者的,方便做個對比。
前提:
通過這里搭建好ZK的示例:http://www.cnblogs.com/EasonJim/p/7613734.html
並且搭建好單機版的服務端:http://www.cnblogs.com/EasonJim/p/7643630.html
實現步驟:
0、下面的操作都是通過官方文檔實踐的,參考: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#324-%E5%B7%B2%E6%9C%89%E9%85%8D%E7%BD%AE%E8%BF%81%E7%A7%BB
1、在配置中心新建好項目
2、把zookeeperservice項目上的application.properties配置文件的配置項復制到這個項目上,然后刪除項目上的這個文件。
注意:保存完成后要點擊發布。
3、新建META-INF/app.properties,並把app.id寫上zookeeperservice。
4、在POM上引入Client
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.jsoft.testzookeeper</groupId> <artifactId>zookeeperdemo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.jsoft.testzookeeper</groupId> <artifactId>zookeeperservice</artifactId> <version>0.0.1-SNAPSHOT</version> <name>zookeeperservice</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>0.8.0</version> </dependency> </dependencies> </project>
5、在程序的main入口的Class上增加@EnableApolloconfig注解
6、運行
一般只需要在/opt/settings/server.properties中配置了env=DEV就可以直接直接啟動(因為Client在本地倉庫的包上已經有了meta_server的信息),但是在IDE上也可以通過指定VM的參數,增加系統屬性變量-D來實現調試,配置如下:
如果到處JAR運行,直接java -jar Spring-Boot-Demo.jar即可,不需要增加什么參數(但前提是配置了/opt/settings/server.properties的env的值)。
7、測試是否正常注冊到ZK,並測試服務消費者能否正常運行
7.1、通過zkCli.sh連接后正常獲取信息
7.2、通過服務消費者訪問
一切正常。
測試工程:https://github.com/easonjim/5_java_example/tree/master/apollotest/test2