SpringCloud - 统一配置中心(二)(上)

简介: SpringCloud - 统一配置中心(二)(上)

在之前的SpringCloud - 统一配置中心(一)基础上,我们再升级下,如何让统一配置自动发布更新到各个 yml 上。

Spring Cloud Bus自动更新配置


image.png



Spring Cloud Bus自动更新配置原理:SpringCloud Bus可以实现,自动刷新。怎么实现呢,通过消息中间件,config-server用了Bus之后会提供一个/bus-refresh接口,然后webhook可以让git去访问这个接口,访问了这个接口就可以把更改的配置,发送到消息中间件。

开始

Config Server & Config Client(e.g. Order)


1、对于 config server 和 config client 微服务项目中,修改版本,正式版本是不需要修改的:spring boot修改版本为2.0.0.BUILD-SNAPSHOT,因为2.0.0.M3使用springCloud Bus是有bug的,spring cloud修改版本Finchley.BUILD-SNAPSHOT。


2、引入依赖 spring-cloud-starter-bus-amqp,添加刷新并启动config server项目。


3、对于 order 微服务项目,spring-cloud-starter-feign修改版本为spring-cloud-starter-openfeign,升版本后,这个组件叫openfeign了。


image.png


4、MQ访问地址:localhost:15672,配置好并重启order和config应用后,RabbitMQ上会出现2个消息队列,如图所示。


# config server
spring:
  application:
    name: config
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/SpringCloud_Sell/config-repo
          username: lly835@163.com
          password: T#27h*E$cg@%}j
          basedir: /Users/admin/code/myProjects/java/imooc/SpringCloud_Sell/config/basedir
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
management:
  endpoints:
    web:
      expose: "*"

5、另外bus-refresh接口默认不暴露,需要在yaml配置文件中暴露出来。配置好重启后观察控制台日志输出(*号是全部暴露出来的意思)。


package com.imooc.order.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/env")
@RefreshScope
public class EnvController {
    @Value("${env}")
    private String env;
    @GetMapping("/print")
    public String print() {
        return env;
    }
}
目录
相关文章
|
23天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
74 5
|
3月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
2月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
57 0
|
4月前
|
Java 微服务 Spring
Spring Cloud全解析:配置中心之解决configserver单点问题
但是如果该configserver挂掉了,那就无法获取最新的配置了,微服务就出现了configserver的单点问题,那么如何避免configserver单点呢?
|
4月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
4月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
4月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
4月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
4月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
4月前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常