首页 > 其他分享 >SpringCloud+Bus动态刷新

SpringCloud+Bus动态刷新

时间:2023-01-02 20:32:44浏览次数:58  
标签:spring SpringCloud springframework starter 刷新 org config Bus cloud

1.设计思想:利用消息机制来进行来进行动态刷新

(1)利用消息总线触发一公客户端/bus/refresh,而刷新所有客户端的配置

SpringCloud+Bus动态刷新_客户端

SpringCloud+Bus动态刷新_客户端_02

(2)利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置

本案例推荐使用(2).具体的操作步骤如下:

2.创建配置中心

  1. 创建配置中心cloud-config-center-3344
  2. 添加坐标

<dependencies>
<!--添加消息总线amqp的支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--需要引入配置中心的坐标-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--引入eureka的客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

</dependencies>

  1. 添加配置类

server:
port: 3344
spring:
application:
name: config-center
cloud:
config:
server:
git:
uri: 你github中配置文件的地址
search-paths:
- springcloud-config
skip-ssl-validation: true
label: master
rabbitmq:
host: 你主机的地址
username: guest
password: guest
port: 5672
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
prefer-ip-address: true
instance-id: config-center
management:
endpoints:
web:
exposure:
include: "bus-refresh" #暴露bus刷新端点的配置

  1. 编写启动类

/**
* 分布式的配置中心
*/
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigCenterMain3344 {
public static void main(String[] args) {
SpringApplication.run(ConfigCenterMain3344.class,args) ;
}
}

  1. 测试

3.编写配置客户端3355

  1. 创建模块cloud-config-client-3355
  2. 添加坐标

<!--这是分布式配置中心的客户端-->
<dependencies>
<!--添加消息总线amqp的支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--导入spring-boot的web模块的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--导入spring-boot的测试模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--引入eureka的客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--客户端的配置信息-->
<!--读取bootstrap配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>

  1. 编写bootstrap.yml配置

server:
port: 3355
spring:
application:
name: config-client
cloud:
config:
uri: http://config-3344.com:3344
label: master
profile: dev
name: config
rabbitmq:
host: 你主机的名字
username: guest
password: guest
port: 5672
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
prefer-ip-address: true
instance-id: config-client3355
management:
endpoints:
web:
exposure:
include: "*" # 暴露当前端口共别人调用

  1. 编写controller

@RestController
@RefreshScope
public class ConfigClientController {
@Value("${config.info}")
private String configInfo ;

@RequestMapping("/configInfo")
public String getConfigInfo() {
return configInfo ;
}
}

  1. 编写启动类

@SpringBootApplication
@EnableEurekaClient
public class ConfigClientMain3355 {
public static void main(String[] args) {
SpringApplication.run(ConfigClientMain3355.class,args) ;
}
}

4.编写配置客户端3366

  1. 创建模块cloud-config-client-3366
  2. 添加坐标

<!--这是分布式配置中心的客户端-->
<dependencies>
<!--添加消息总线amqp的支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--导入spring-boot的web模块的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--导入spring-boot的测试模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--引入eureka的客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--客户端的配置信息-->
<!--读取bootstrap配置文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>

  1. 创建bootstrap.yml配置文件

server:
port: 3366
spring:
application:
name: config-client
cloud:
config:
uri: http://config-3344.com:3344
label: master
profile: dev
name: config
rabbitmq:
host: 你主机的名字
username: guest
password: guest
port: 5672
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
prefer-ip-address: true
instance-id: config-client3366
management:
endpoints:
web:
exposure:
include: "*" # 暴露当前端口共别人调用

  1. 编写controller

@RestController
@RefreshScope
public class ConfigClientController {
@Value("${config.info}")
private String configInfo ;

@RequestMapping("/configInfo")
public String getConfigInfo() {
return configInfo ;
}
}

  1. 编写启动类

@SpringBootApplication
@EnableEurekaClient
public class ConfigClientMain3366 {
public static void main(String[] args) {
SpringApplication.run(ConfigClientMain3366.class,args) ;
}
}

  1. 测试

5.实现动态刷新(全局广播)

需要手动的向配置中心发送如下的请求:

curl -X POST "​​http://config-3344.com:3344/actuator/bus-refresh​​"

6.实现动态刷新(定点广播)

curl -X POST "​​http://config-3344.com:3344/actuator/bus-refresh/config-client:3355​​"

其中config-client当前要刷新的客户端的应用的名字,3355为端口号。

标签:spring,SpringCloud,springframework,starter,刷新,org,config,Bus,cloud
From: https://blog.51cto.com/u_14613614/5984019

相关文章

  • SpringCloud分布式配置中心的搭建
    1.配置中心服务端的搭建创建模块cloud-config-center3344添加坐标<!--这是分布式的配置中心--><dependencies><!--需要引入配置中心的坐标--><dependency><......
  • 12、网关SpringCloud-Gateway
    网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而springcloudgateway作为SpringCloud官方推出的第二代网关框架,取代了Zuul网关。网关提供API......
  • 【SpringCloud】SpringCloud简介
    SpringCloud简介​​1.认识微服务​​​​1.0.学习目标​​​​1.1.单体架构​​​​1.2.分布式架构​​​​1.3.微服务​​​​1.4.SpringCloud​​​​1.5.总结​​​​2.......
  • 9、SpringCloud-Nacos作为配置中心
    1、pom.xml引入NacosConfigStarter<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>......
  • 8、SpringCloud-OpenFeign远程调用步骤
    假设我们想要用会员服务调用优惠券服务来查询会员的所有优惠券;1、引入依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring......
  • 7、SpringCloudAlibaba--注册中心Nacos
    Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。他是使用java编写。需要依赖java环境Nacos文档地址:https://nacos.io/z......
  • SpringCloud Gateway的一次踩坑
    在一次使用SpringCloudGateway做网关时,向网关发出URL请求,结果网关在路由时报错:java.lang.IllegalStateException:Invalidhost:lb://ORDER_SERVICE根据报错堆栈信息......
  • SpringCloud之Sleuth全链路日志跟踪
    目录1Sleuth链路跟踪1.1分布式系统面临的问题1.2Sleuth是什么1.3Zipkin是什么1.4链路监控相关术语1.5实战练习1.5.1pom.xml1.5.2添加yml配置1.5.3添加控制器1.5.4......
  • react-router 同一路由,参数不同,页面没有刷新
    react-router同一路由,参数不同,页面没有刷新2020-01-1117:53:04使用componentWillReceiveProps(newProps)函数,当props改变时,我们就可以在该函数中通过newProps.ma......
  • springcloud 学习八、Zuul 路由网关、路由的基本配置、路由访问映射规则
    前言案例的都是循序渐进的。案例的顺序:微服务讲诉->父工程maven的module建立和rest风格的请求->eureka的学习、三大组件,服务注册与消费->eureka的集群操作->ribbon的负载均......