diff --git a/apollo-client/README.md b/apollo-client/README.md index 04eaf20abe6587e2ca681bee42d862d1d6a46ef4..99e1ac89857e0b0e62655798eeb4b663404c102f 100644 --- a/apollo-client/README.md +++ b/apollo-client/README.md @@ -1,11 +1,85 @@ -## Maven Dependency +## I. Prerequisite + +### I.I Mandatory Setup +Apollo client requires `AppId` and `Environment` information available to function properly, so please read the following and configure them properly: + +#### 1. AppId + +AppId is the identity for the application, which is a key information to retrieve the config from server. + +AppId information should be put in `classpath:/META-INF/app.properties` with its key as `app.id`. + +For example, you could place the file as the following screenshot: + +![app.properties example](doc/pic/app-id-location.png) + +And config the file as: + +> app.id=YOUR-APP-ID + +#### 2. Environment + +Apollo supports config by multiple environments, so environment is another key information to retrieve the config from server. + +Environment could be configured in 3 ways: + +1. As Java System Property + * You could specify environment as java system property `env` + * For example, when starting the java application, it can be configured via `-Denv=YOUR-ENVIRONMENT` + * Please note the key should be lower case + +2. As OS System Environment + * You could also specify environment as system environment `ENV` + * Please note the key should be UPPER CASE + +3. As Property File + * You could create a file `/opt/settings/server.properties` on the target machine + * And specify the environment in the file as `env=YOUR-ENVIRONMENT` + * Please note the key should be lower case + +### I.II Optional Setup + +#### Cluster + +Apollo supports config separated by clusters, which means for one appId and one environment, you could have different configs. + +If you need this functionality, you could specify the cluster as follows: + +1. As Java System Property + * You could specify environment as java system property `apollo.cluster` + * For example, when starting the java application, it can be configured via `-Dapollo.cluster=xxx` + * Please note the key should be lower case +2. As Property file + * You could create a file `/opt/settings/server.properties` on the target machine + * And specify the environment in the file as `idc=xxx` + * Please note the key should be lower case + +##### Cluster Precedence + +1. If both `apollo.cluster` and `idc` are specified: + * We will first try to load config from cluster specified as `apollo.cluster` + * If not found, we will fall back to cluster specified as `idc` + * If still not found, we will fall back to the default cluster `default` + +2. If only `apollo.cluster` is specified: + * We will first try to load config from cluster specified as `apollo.cluster` + * If not found, we will fall back to the default cluster `default` + +3. If only `idc` is specified: + * We will first try to load config from cluster specified as `idc` + * If not found, we will fall back to the default cluster `default` + +4. If neither `apollo.cluster` nor `idc` is specified: + * We will load config from the default cluster `default` + +## II. Maven Dependency com.ctrip.framework.apollo apollo-client 0.0.1 -## Client Usage +## III. Client Usage ### 1. Load config from default namespace(application) ```java diff --git a/apollo-client/doc/pic/app-id-location.png b/apollo-client/doc/pic/app-id-location.png new file mode 100644 index 0000000000000000000000000000000000000000..09bbf36701dde905a6bda60731dc36fb3fb111a1 Binary files /dev/null and b/apollo-client/doc/pic/app-id-location.png differ