config+bus 实现动态刷新
在config-client-demo中的pom.xml添加依赖
<!--spring boot Actuator,感应服务端变化-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--spring cloud bus消息队列-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
在testcontroller中开启更新注解
@RestController
//开启更新功能
@RefreshScope
public class TestController {
//读取配置文件中的email
@Value("${email}")
private String email;
/**
* 返回配置文件中的值
*
*/
//访问value
@GetMapping("/value")
@ResponseBody
public String returnValue(){
return email;
}
}
在application.yml中添加配置
###需要启动rabbitmq
###rabbitmq类似于activemq,host是安装了mq的主机地址,端口号,账号,密码
rabbitmq:
host:
port:
username:
password:
###bus刷新的权限
management:
endpoints:
web:
exposure:
include: bus-refresh
高可用分布式配置中心
原理:把配置中心也注册到注册中心,这样,服务端就可以调用服务的方式来访问配置中心的配置了
添加config-server的pom.xml依赖
<!--改用高可用配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
修改配置文件application.yml
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka
在启动类里添加
@EnableEurekaClient
在config-client-demo的pom.xml中添加
<!--改用高可用配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
在application.yml中
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka
cloud:
config:
###config server的uri
###uri: http://localhost:9100/
###指定环境
profile: dev
###指定分支
label: master
discovery:
enabled: true
###使用服务名就是使用config-server-demo注册到eureka的名字
service-id: config-server