Config Server从本地读取配置文件
将所有的配置文件统一写带Config Server过程的目录下,Config Server暴露Http API接口,Config Client调用Config Server的Http API来读取配置文件
1、引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
2、启动类添加@EnableConfigServer注解
@EnableConfigServer @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
3、工程配置文件配置本地读取
spring: cloud: config: server: native: search-locations: classpath:/shared profiles: active: native application: name: config-server server: port: 9001
4、创建共享配置文件config-client-dev.yml
server: port: 9002 foo: foo version 1
==========================
1、引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
2、bootstrap.yml作为程序的配置文件(bootstrap相对于application具有优先的执行顺序)
spring: application: name: config-client cloud: config: uri: http://localhost:9001 fail-fast: true profiles: active: dev
这样的客户端程序已经在9002端口启动,也可以像本地文件一样读取远程的配置文件:
@Value("${foo}") String foo; @GetMapping("/hi") public String hi() { return foo; }
Config Server从远程Git读取配置文件
spring: cloud: config: server: git: uri: https://github.com/forezp/springcloudConfig search-paths: respo username: aaa password: aaa label: master application: name: config-server
高可用Config Server集群
1、配置Eureka Server
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
server: port: 9003 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:${server.port}/eureka
@EnableEurekaServer @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
2、改造config-server
spring: cloud: config: server: native: search-locations: classpath:/shared profiles: active: native application: name: config-server server: port: 9001 eureka: client: service-url: defaultZone: http://localhost:9003/eureka
@EnableConfigServer @SpringBootApplication @EnableEurekaClient public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
3、改造config-client
spring: application: name: config-client cloud: config: fail-fast: true discovery: enabled: true service-id: config-server profiles: active: dev server: port: 9002 eureka: client: service-url: defaultZone: http://localhost:9003/eureka
@SpringBootApplication @RestController @EnableEurekaClient public class DemoApplication { @Value("${foo}") String foo; @GetMapping("/hi") public String hi() { return foo; } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Spring Cloud Bus刷新配置
只需要改造config-client部分,消息驱动
1、引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
2、配置文件添加mq连接信息
spring: application: name: config-client cloud: config: fail-fast: true discovery: enabled: true service-id: config-server profiles: active: dev rabbitmq: host: port: username: password: management: security: enabled: false
3、在需要更新的配置类添加@RefreshScope,只有添加了该注解,才会服务不重启的情况下更新配置
4、访问一个应用,http://localhost:9003/bus/refresh即可更新所有集成了config-client的应用的配置信息