springcloud版本:Greenwich.SR2
一、server端
1.pom.xml引进依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-bus</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-monitor</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
2.配置文件为:
eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ spring: application: name: cloudconfig cloud: config: server: git: uri: https://github.com/xxx/xxx.git username: xxx password: xxx rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest management: endpoints: web: exposure: include: bus-refresh
3.启动的Application文件加入两个注解 @EnableDiscoveryClient @EnableConfigServer
二、client端
1.pom.xml引进依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
2.bootstrap.yml文件(优先级别高于application.yml)
server: port: 8090 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ spring: cloud: config: discovery: enabled: true service-id: CLOUDCONFIG profile: dzy bus: enabled: true id: ${spring.application.name}:${spring.cloud.config.profile}:${random.value} rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest management: endpoints: web: exposure: include: bus-refresh
3.启动的Application文件加入注解 @EnableDiscoveryClient
4.配置变量注入的文件需要使用注解 @RefreshScope
三 、github的webhooks上配置地址(此处我用了小工具natapp将内网映射到外网上):http://44vwwk.natappfree.cc/monitor?path=*
四、启动eureka服务注册中心,config server端,config client端。修改git上的配置文件变量,点击保存后config server跟config client就能自动刷新配置。
踩过的坑:
1.因为springcloud2.0后提供了monitor路由给github的webhooks,所以用/monitor访问即可,如果用/actuator/bus-refresh会报错需要改很多文件所以不推荐。当时用monitor要注意server端的pom.xml文件记得引入包。
2.spring-boot-starter-actuator包 在server端还是client端都需要引入,它是监控接口的。
3.webhooks为什么只会刷新server端不刷新client端?因为spring.cloud.bus.id需要我们跟webhooks配置规则一致,所以在client的配置文件中需要加入spring.cloud.bus.id: ${spring.application.name}:${spring.cloud.config.profile}:${random.value}
ps:这边的总线我用的是rabbitMQ,如果用kafuka的同学修改下依赖跟配置文件即可。