irpas技术客

SpringCloud的config 和 bus 整合产生动态刷新_爱学语言的人

大大的周 6727

SpringCloud中的配置中心(config)和消息总线(Bus)的整合使用,解决的是项目中的配置文件的更改后的及时刷新!!! config配置中心 配置 服务端的config,

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>

yml的配置:

server: port: 3344 spring: application: name: springcloudconfigserver #名称 cloud: config: server: git: search-paths: - springcloud uri: https://gitee.com/search122/springcloud.git default-label: master

我们使用配置管理对远程仓库进行拉取代码配置文件

uri 表示的是gitee的仓库地址search-paths 表示的是gitee的仓库的名称default-label 表示的是哪一个分支

配置好了config配置中心之后我们启动主启动类。通过浏览器进行访问当前的3344端口http://localhost:3344/master/application-pro.yml 查找到配置文件 (这里的gitee可以直接访问,已经开启了一个仓库,也有配置文件,你们可以直接获取)

config配置中心客户端:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <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.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId>

上面依赖的意思分别对应的是 web eureka注册中心 bootstrap配置文件 监控中心

config客户端配置中心的配置文件采用的是bootstrap.yml,所以对应的依赖必不可少。 客户端配置yml:

eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8080/eureka/ spring: application: name: configclient2 cloud: config: label: master name: application uri: http://localhost:3344 profile: pro label 表示的是当前uri的哪个分支name 表示当前拉取仓库的哪个文件名称(因为仓库有application-pro.yml文件)profile:文件采用的是’-‘分离的,所以这里的Pro表示的文件’-‘后面的内容。uri: 表示的是当前项目的config服务端配置的端口是3344。 配置后之后启动浏览器进行过访问当前3355端口,意思就是获取通过3355获取到3344,然后通过3344获取到远程仓库的配置文件的信息。 如果能够访问到说明已经成功配置好了配置中心。

问题来了: 缺点,如果运维人员对远程仓库进行修改了配置文件,那么只有config服务端能够实时的刷新,而其他config客户端的服务没法动态的获取。

如何解决: 需要通过命令行的方式进行激活一下config客户端的服务才可以生效。

整改1: 修改配置中心的服务3355,更改添加一个监控的依赖,再加一个注解,再yml文件写一段配置即可。3步骤、

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>

再次启动,重复上次的操作,修改之后看看有没有进行动态刷新,因为此时我们已经配置了监控,那么使用命令行的方式curl -X POST “http://localhost:3355/actuator/refresh” 再次查看浏览器是否刷新。

重头戏: 每次都需要命令行对单个客户端配置中心进行激活,那样很麻烦,所以使用消息总线bus. 需要用到RabbitMq,你们自己去官网下载,只要能运行RabbitMQ就行 3344服务端整改:

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>

yml进行修改: 添加rabbitmq的配置信息 更改监控的信息bus-refresh。如果遇到bug百度一下。

之后再次启动服务修改远程仓库的信息之后,我们不需要重新激活每一个客户端,只需要激活配置中心3344即可。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: # #bus #整合产生动态刷新