配置中心(服务端)
该项目基于spring cloud Edgware.SR5 版本
application.properties
server.port=8888
spring.config.name=config-server
# git存储库位置(uri需要加上.git后缀)
spring.cloud.config.server.git.uri=https://xxxx/spring-cloud-config.git
# 如果是私有库,则需要加用户名密码验证
spring.cloud.config.server.git.username=xxx
spring.cloud.config.server.git.password=xxx
# 去掉端点安全认证
management.security.enabled=false
# 注册到eureka注册中心,以符合spring cloud服务治理的理念
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
# 消息总线bus-kafka配置
spring.cloud.bus.refresh.enabled=true
spring.cloud.stream.kafka.binder.zk-nodes=127.0.0.1:2181
spring.cloud.stream.kafka.binder.brokers=127.0.0.1:9092
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- 消息总线 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<!-- 默认使用0.11.1.1,我的kafka服务器为0.10.0.0,所以需要指定一样的版本 -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.0.0</version>
</dependency>
测试:
访问 http://localhost:8888/consumer-server/dev 看能否看到相应的配置信息
客户端
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- 消息总线 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<!-- 默认使用0.11.1.1,我的kafka服务器为0.10.0.0,所以需要指定一样的版本 -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.0.0</version>
</dependency>
bootstrap.properties中指定配置中心
# 配置中心
spring.cloud.config.name=consumer-server
spring.cloud.config.profile=dev
# 使用配置中心服务名,而非url,以便符合服务治理理念
#spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server
management.security.enabled=false
application.properties中指定kafka信息(或者放在配置中心)
spring.cloud.stream.kafka.binder.zk-nodes=10.19.11.18:2181
spring.cloud.stream.kafka.binder.brokers=10.19.11.18:9092
controller
使用@RefreshScope来达到刷新配置的目录
测试:
访问 http://localhost:8081/consumer/gitConfig/welcome 看是否能取到git上的配置
bus刷新配置
修改 git 上的配置,使用 post 请求config server地址 http://localhost:8888/bus/refresh ,然后重新请求客户端 http://localhost:8081/consumer/gitConfig/welcome, 发现配置已经改变