yml 配置文件保存到git服务器,例如 github.com 或 gitee.com
微服务启动时,从服务器获取配置文件
1)在父工程springcloud1下新建文件夹 config
2)把2,3,4三个项目的配置文件,复制到config目录,并修改名称
注:一般运行配置用dev,测试用test,生产用prod,官方文档这么写的,当然,取名没有要求,这样会显得更专业些。
3)分别在三个配置文件中添加配置
默认情况下,git仓库中的命令会覆盖本地命令参数,端口这样的参数,不可以被随便修改,所以设置不覆盖。
cloud:
config:
override-none: true
注意是在spring下
4)创建仓库
双击 shift
可以选用父工程作为仓库
5)提交文件
没创建远程仓库的话,创建远程仓库。
push
添加eureka client,config server依赖
3.配置application.ymlspringcloud1 com.drhj 0.0.1-SNAPSHOT 4.0.0 com.drhj sp09-config 0.0.1-SNAPSHOT sp09-config Demo project for Spring Boot 1.8 org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/ronghuading/springcloud1
search-paths: /config #/子目录/子目录/子目录 不用写/tree/master
server:
port: 6001
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
如果起不来,把注解删除了
注意,这里的uri是仓库地址,search-paths是config所在仓库的子目录
package com.drhj.sp09;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@SpringBootApplication
public class Sp09ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(Sp09ConfigApplication.class, args);
}
}
5.测试
1)启动eureka服务器,检查是否又config-server 的注册信息
http://eureka1:2001/
2)访问配置中心的配置文件
http://localhost:6001/item-service/dev
http://localhost:6001/user-service/dev
http://localhost:6001/order-service/dev
将item-service,user-service,order-service的application.yml中的所有配置都注销
2.添加config依赖在三个服务的pom.xml中添加如下
3.配置bootstrap.ymlorg.springframework.cloud spring-cloud-starter-config
创建bootstrap.yml文件,这里以user-service为例,因为user服务中添加用户信息的原因,所以没有获取配置信息启动不了
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
spring:
cloud:
config:
discovery:
enabled: true #从注册中心发现配置中心的地址
service-id: config-server
name: user-service
profile: dev
item-serice,order-service同样的配置,改变 对应的name
4,重启服务重启user-service,获取到仓库配置,启动成功
post 请求消息总线刷新端点,服务器会向 rabbitmq 发布刷新消息,接收到消息的微服务会向配置服务器请求刷新配置信息
Bus 是spring cloud config 提供的一个辅助完成消息收发操作的组件以及配置的刷新
RabbitMQ详见:RabbitMQ基础运用
在需要刷新配置的项目即这里的 item-service,user-service,order-service和配置项目config中添加 Bus, RabbitMQ, binder-rabbit 依赖org.springframework.boot spring-boot-starter-actuator
在配置项目config的yml文件中添加配置org.springframework.boot spring-boot-starter-amqp org.springframework.cloud spring-cloud-bus org.springframework.cloud spring-cloud-stream-binder-rabbit
1)暴露 bus-refrush: m.e.w.e.i=bus-refrush
2)rabbitmq连接
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/ronghuading/springcloud1
search-paths: /config
rabbitmq:
host: 192.168.64.140
port: 5672
username: admin
password: admin
virtual-host: /drhj #如果创建了虚拟空间,则添加,注意加斜杠,使用默认的无需添加
server:
port: 6001
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka,http://eureka2:2002/eureka
management:
endpoints:
web:
exposure:
include: bus-refresh
2.配置刷新
修改config目录的三个文件并提交
1)添加rabbitmq的连接
2)提交推送到远程仓库
注意启动顺序是
eureka -> config -> item,user,order -> zuul
正常启动后,清空控制台信息
使用postman 访问 http://localhost:6001/actuator/bus-refresh 注意要把所有参数,请求头等等都清空,最好创建新的测试
查看控制台
出现如上表示刷新成功
想只刷新某一个服务,添加子路径即可,如:http://localhost:6001/actuator/bus-refresh/item-service
所以要实现配置的更改,只需要在存放yml文件的config中对对应的yml文件进行修改,然后上传git远程仓库,通过使用rabbitmq,手动bus刷新,即可完成配置的修改。



