• SpringCloud个人笔记-03-Config初体验


    • sb-cloud-config 配置中心
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.huarui</groupId>
        <artifactId>sb_cloud_config</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>sb_cloud_config</name>
        <packaging>jar</packaging>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.13.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Edgware.SR3</spring-cloud.version>
        </properties>
    
        <dependencies>
    
            <!-- 消息总线支持 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>
    
            <!-- eureka client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
    
            <!-- config依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    pom.xml
    server:
      port: 9002
    
    spring:
      application:
        name: sb-cloud-config
      cloud:
          config:
            server:
              git:
                uri: https://github.com/youxiu326/sb_cloud_config_repo
                username: youxiu326
                password: 123456
                basedir: D:sortwareIDEApackagesb_springcloud_packageasedir
                #searchPaths: spring-cloud/helloworldConfig
      #RebbitMq
      rabbitmq:
        host: 39.108.85.204
        port: 5672
        username: guest
        password: guest
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://39.108.85.204:8761/eureka/
      instance:
        #注册时使用ip而不是主机名
        prefer-ip-address: true
        #指定此实例的ip
        ip-address: 39.108.85.204
    
    # 博客: https://www.cnblogs.com/moonandstar08/p/7571610.html
    
    # 关闭安全验证
    management:
      security:
         enabled: false
    application.yml

    注: 避免通过服务名无法发现服务

    eureka:
      client:
        serviceUrl:
          defaultZone: http://39.108.85.204:8761/eureka/
      instance:
        #注册时使用ip而不是主机名
        prefer-ip-address: true
        #指定此实例的ip
        ip-address: 39.108.85.204
    
    
    多网卡环境下Eureka服务注册IP 不正确,部署服务时手动指定ip,避免该服务无法被发现
    
    @SpringBootApplication
    @EnableEurekaClient //@EnableEurekaClient将它注册到服务中心
    @EnableConfigServer //@EnableConfigServer注解说明了一个Config Server
    public class SbCloudConfigApplication {
    
    	//http://localhost:9002/application-dev.yml
    
    	public static void main(String[] args) {
    		SpringApplication.run(SbCloudConfigApplication.class, args);
    	}
    
    }
    

    • sb_cloud_config_client
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.huarui</groupId>
        <artifactId>sb_cloud_config_client</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>sb_cloud_config_client</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.13.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Edgware.SR3</spring-cloud.version>
        </properties>
    
        <dependencies>
    
            <!-- 消息总线支持 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>
    
    
            <!-- eureka client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
    
            <!-- config依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    pom.xml
    spring:
      application:
        name: sb_cloud_config_client
      cloud:
        config:
          discovery:
            enabled: true
            service-id: SB-CLOUD-CONFIG
          profile: dev
          #uri: http://localhost:9002/
    #  #RebbitMq
      rabbitmq:
        host: 39.108.85.204
        port: 5672
        username: guest
        password: guest
    
    #management:
    #  security:
    #    enabled: false #刷新时,关闭安全验证
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://39.108.85.204:8761/eureka/
      instance:
        #注册时使用ip而不是主机名
        prefer-ip-address: true
        #指定此实例的ip
        #ip-address: ip
    server:
      port: 9003
    bootstrap.yml

    bootstrap.yml 先于 application.yml 读取

    @SpringBootApplication
    @EnableEurekaClient
    public class SbCloudConfigClientApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(SbCloudConfigClientApplication.class, args);
    	}
    
    
    	// post http://localhost:9003//bus/refresh
    
    }
    
    @RestController
    @RefreshScope
    public class HelloController {
    
        @Value("${lihui}")
        private String lihui;
    
        @GetMapping("/hello")
        public String hello(){
            return lihui;
        }
    }
    

    github:结构

     

     

    • 依次启动  eureka server,  config,  config-client
    • 访问config-client  http://localhost:9003/hello
    • 可以发现config-client中的配置文件信息于config服务中获得
    • 修改github上的配置文件,刷新页面,并无改变
    • post 方式访问 http://39.108.85.204:9002/bus/refresh

     

        刷新页面,值已改变

    • 每次修改github配置文件后,每次自己访问也是非常不方便的,可在github中配置webHook 每次提交手动发送一个请求

    • 这样每次提交文件时,就会向rabbitMQ队列中发消息,所有收到消息的就会更新 带有 @RefreshScope 注解的类

      

  • 相关阅读:
    李宏毅机器学习课程---1、机器学习介绍
    尚学python课程---15、python进阶语法
    尚学python课程---14、python中级语法
    尚学python课程---13、python基础语法
    Android4.2.2由于越来越多的物理按键(frameworks)
    ym——Android之ListView性能优化
    我学cocos2d-x (两) 采用Delegate(信托)
    mac提升yosemite后php 扩展修复
    JAVA学习课第五 — IO流程(九)文件分割器合成器
    第11周项目-2.2
  • 原文地址:https://www.cnblogs.com/youxiu326/p/config.html
Copyright © 2020-2023  润新知