Spring cloud configServer配置中心简单使用

58 篇文章 1 订阅
29 篇文章 1 订阅

Spring cloud configServer配置中心简单使用

    <dependencies>
        <!--eureka client 客户端依赖引⼊-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--config配置中⼼服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
    </dependencies>
在github上新建仓库

https://github.com/ln0491/test-config

新建项目

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
//开启配置中心服务
@EnableConfigServer
//开启服务发现
@EnableDiscoveryClient
@SpringBootApplication
public class Config1Application {
    public static void main(String[] args) {

        SpringApplication.run(Config1Application.class,args);
    }
}

配置文件

server:
  port: 9991

# 注册到eureka注册中
eureka:
  client:
    service-url:
      # 使用逗号分隔 多个实例,
      defaultZone: http://EduCloudEurekaServerB:8762/eureka,http://EduCloudEurekaServerA:8761/eureka
  instance:
    prefer-ip-address: true #服务实例中显示ip,而不是显示主机名(兼容老的eureka版本)
    # 实例名称: 192.168.1.103:lagou-service-resume:8080,我们可以自定义它
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
    # 自定义元数据
#    metadata-map:
#      cluster: cl1
#      region: rn1
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
logging:
  level:
    com.liu.service.feign.ResumeFeignClient: debug


spring:
  application:
    name: edu-cloud-config
  cloud:
    config:
      server:
        git:
          uri: https://github.com/ln0491/test-config
          username: 这里github用户名
          password: 这里是github的密码
          search-paths:
            -  edu-config-repo

      label: master
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: root
    password: root123
    virtual-host: dev_tests
访问

http://localhost:9991/master/edu-service-resume-dev.yml
在这里插入图片描述

构建Client客户端

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

在这里插入图片描述

  • bootstrap.yml
spring:
  cloud:
    config:
      name: edu-service-resume
      profile: dev
      label: master
      uri: http://localhost:9991
management:
  endpoints:
    web:
      exposure:
        include: "*"

# 注册到eureka注册中
eureka:
  client:
    service-url:
      # 使用逗号分隔 多个实例,
      defaultZone: http://EduCloudEurekaServerB:8762/eureka,http://EduCloudEurekaServerA:8761/eureka
  instance:
    prefer-ip-address: true #服务实例中显示ip,而不是显示主机名(兼容老的eureka版本)
    # 实例名称: 192.168.1.103:lagou-service-resume:8080,我们可以自定义它
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
    # 自定义元数据
    metadata-map:
      cluster: cl1
      region: rn1
  • application.yml
server:
  port: 8080
spring:
  application:
    name: edu-service-resume
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/edu?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=UTC
    username: root
    password: root
  jpa:
    database: MySQL
    show-sql: true
    generate-ddl: false
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl  #避免将驼峰命名转换为下划线命名
      ddl-auto: update



  • 启用类
@RefreshScope
//@EnableEurekaClient //Eureka 单独有
@SpringBootApplication
@EnableDiscoveryClient  //开启注册中心客户端 通用
public class Resume8080Application {

    public static void main(String[] args) {
        SpringApplication.run(Resume8080Application.class,args);
    }
}

  • controller
@RestController
public class ConfigController {


    @Value("${mysql.url}")
    private String mysqlUrl;
    @Value("${edu.message}")
    private String eduMessage;




    @RequestMapping("/config")
    public String viewconfig(){

        System.err.println("mysqlUrl   "+mysqlUrl);
        System.err.println("eduMessage   "+eduMessage);

        return mysqlUrl+"\n"+eduMessage;
    }

}

  • 访问
    http://localhost:8080/config
    在这里插入图片描述

在github上修改配置

访问
http://localhost:9991/master/edu-service-resume-dev.yml
发现配置已经修改了

http://localhost:8080/config 并没有更新,重启后,更新成功

在Controller上

@RefreshScope
public class ConfigController {
  • 重启应用
    修改github的配置
    手动刷新
    http://localhost:8080/actuator/refresh

http://localhost:8080/config

使⽤⼴播机制,⼀次通知,处处⽣效,⽅便⼤范围配置刷新

结合消息总线(Bus)实现分布式配置的⾃动更新(Spring Cloud
Config+Spring Cloud Bus)

Spring Cloud Bus(基于MQ的,⽀持RabbitMq/Kafka) 是Spring Cloud中的消息总线⽅案, Spring
Cloud Config + Spring Cloud Bus 结合可以实现配置信息的⾃动更新

在这里插入图片描述

Spring Cloud Config+Spring Cloud Bus 实现⾃动刷新

使⽤RabbitMQ, ConfigServer和ConfigClient都添加都消息总线的⽀持以及
与RabbitMq的连接信息

  1. Config Server与客户端添加息总线⽀持
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

2) ConfigServer与客户端添加配置

spring:
   rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: root
    password: root123
    virtual-host: dev_tests
  1. 修改github上的配置

重启各个服务,更改配置之后,向配置中⼼服务端发送post请求
http://localhost:9991/actuator/bus-refresh

再访问
http://localhost:8080/config
http://localhost:8082/config
不用重启,所有客户端配置已经更新

定向配置刷新

http://localhost:9991/actuator/bus-refresh/edu-service-resume:8080
最后⾯跟上要定向刷新的实例的 服务名:端⼝号即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值