使用webhook实现spring-cloud-config server端跟client端的服务配置自动刷新

本文详细介绍了如何使用Spring Cloud Config Server作为配置中心,包括server端和client端的搭建步骤,配置文件详解,以及通过GitHub Webhooks实现配置的动态刷新。特别关注了配置变量注入、监控接口的设置及常见问题的解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的同学修改下依赖跟配置文件即可。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值