简介 通过bus组件,可以在更新git配置信息后,通过发送一个post请求,更新《server-config》拉取的配置,并以RabbitMQ将更新内容广播至其对应的各个微服务;
本篇前置:
SpringCloud极简入门>配置服务#config
实战
1、前置准备
1.1、需要开启RabbitMQ服务
cmd以管理员权限执行net stop RabbitMQ && net start RabbitMQ
;
1.2、对zipkin有影响
原本cmd执行java -jar zipkin-server-2.10.1-exec.jar
,改为java -jar zipkin-server-2.10.1-exec.jar --zipkin.collector.rabbitmq.addresses=localhost
;
2、《server-order》项目改造
2.1、添加依赖
actuator可以在修改git配置内容后刷新《server-config》服务拉取的配置值;
bus-amqp可以通过RabbitMQ通知各个微服务刷新获取的git配置值;
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-starter-bus-amqp
2.2、yml配置
- application.yml添加
#支持bus management: endpoints: web: exposure: include: "*" cors: allowed-origins: "*" allowed-methods: "*"
- bootstrap.yml添加
#读取server-config服务上当前服务的git配置 spring: cloud: config: label: main profile: dev discovery: enabled: true service-id: server-config #支持bus bus: trace: enabled: true enabled: true #支持bus rabbitmq: host: localhost port: 5672 username: guest password: guest
在含@Value和@ConfigurationProperties的获取git配置的类上声明注解
@RefreshScope
;3、配置完毕,查看效果 1、分别启动《server-center》,《server-config》,《server-order》,请求http://localhost:7002/cfgP,获得结果
GitAutoRefreshConfig{env='dev', user=User{username='catface', password='root'}}
2、修改git上的配置值env=devdevdev;
3、 postman发起post请求http://localhost:7002/actuator/bus-refresh后再访问http://localhost:7002/cfgP,获得结果,可以看到在没有重启服务的情况下,读取的配置文件更新了;
GitAutoRefreshConfig{env='devdevdev', user=User{username='catface', password='root'}}
4、再以7003端口启动《server-order》服务,修改git配置后,操作上述步骤3、后会发现以7002和7003端口读取的配置值均是更新后的,这就是RabbitMQ将更新的git配置广播给了各个微服务;
总结 【服务端_java|SpringCloud极简入门>消息总线#bus】通过bus组件,可以在更新git配置信息后,通过发送一个post请求,更新《server-config》拉取的配置,并以RabbitMQ将更新内容广播至其对应的各个微服务;
推荐阅读
- SpringBoot|SpringBoot 札记 (SpringSecurity入门与整合)
- SpringBoot|SpringBoot 札记(入门)
- spring源码|spring源码-生命周期
- spring初始化&循环引用
- python|Python 强大的信号库 blinker 入门教程
- Java毕业设计项目实战篇|Java项目:(小程序)物业管理系统(spring+spring mvc+mybatis+layui+微信小程)
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- =======j2ee|spring用注解实现注入的@resource,@autowired,@inject区别
- jvm|【JVM】JVM08(java内存模型解析[JMM])