springcloud——消息总线演示程序

一、configServer(3344)

1、pom文件

<?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">

    <!--该模块的父工程的gav坐标-->
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0.0</version>
    </parent>

    <!--该模块的版本号-->
    <modelVersion>4.0.0</modelVersion>

    <!--该模块的名称-->
    <artifactId>config-center3344</artifactId>

    <dependencies>

        <!--必须添加的依赖(与spring-cloud-starter-bus-amqp一起添加使用,否则运行时会报ClassNotFound的错误)-->
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-amqp</artifactId>
            <version>2.2.9.RELEASE</version>
        </dependency>

        <!--消息总线RabbitMQ的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

        <!--springcloud框架对config-server的整合-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

        <!--springcloud框架对netflix的eureka-server的整合-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--springboot框架web项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--springboot框架actuator项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--springboot框架对devtools的整合-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <!--javabean自动生成依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--工程重构依赖-->
        <dependency>
            <groupId>com.springcloud</groupId>
            <artifactId>api-commons</artifactId>
            <version>1.0.0</version>
        </dependency>

    </dependencies>

</project>

2、主配置文件

#指定微服务的端口号
server:
  port: 3344

#指定微服务的名称
spring:
  application:
    name: config-center
  cloud:
    config:
      server:
        git:
          #指定github的访问路径
          uri: https://github.com/duchaostart/test.git
          #指定在github的仓库搜索路径
          search-paths:
          - test
          force-pull: true
          #指定github的用户名
          username: duchaostart
          #指定github指定用户的密码
          password: dc19980328
      #读取github的分支
      label: master


  #rabbitmq的相关配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest


eureka:
  client:
    #该微服务注册进eureka服务注册中心
    register-with-eureka: true
    #允许该微服务搜索其它注册进eureka的微服务
    fetch-registry: true
    #指定eureka注册中心的访问路径
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/


#rabbitmq的相关配置,暴露bus刷新配置端点
management:
  endpoints:    #暴露bus刷新配置的端点
    web:
      exposure:
        include: 'bus-refresh'

3、主启动类

package com.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

/**
 * @author dc
 * @date 2020/8/5 - 16:24
 */
@SpringBootApplication
@EnableConfigServer         //开启服务配置中心
public class ConfigCenterMain3344 {

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

}

二、configClient(3355)

1、pom文件

<?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">

    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0.0</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>config-client3355</artifactId>

    <dependencies>

        <!--必须添加的依赖(与spring-cloud-starter-bus-amqp一起添加使用,否则运行时会报ClassNotFound的错误)-->
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-amqp</artifactId>
            <version>2.2.9.RELEASE</version>
        </dependency>


        <!--添加消息总线rabbitmq的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

        <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.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

    </dependencies>

</project>

2、主配置文件(bootstrap.yml)

#指定服务的端口号
server:
  port: 3355

#指定微服务的名称
spring:
  application:
    name: config-client

  #config客户端配置
  cloud:
    config:
      #分支名称
      label: master
      #配置文件名称
      name: config
      #读取后缀名称     上述3个综合:master分支上config-dec.yml的配置文件被读取http://localhost:3344/master/config-dev.yml
      profile: dev
      #配置中心地址
      uri: http://localhost:3344

  #rabbitmq相关配置,15672是web管理界面端口,5672是访问的端口
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

#服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/


#暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

3、主启动类

package com.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @author dc
 * @date 2020/8/6 - 11:01
 */
@SpringBootApplication
@EnableEurekaClient
public class ConfigClientMain3355 {

    public static void main(String[] args) {

        SpringApplication.run(ConfigClientMain3355.class, args);

    }

}

4、控制器

package com.springcloud.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.RestController;


/**
 * @author dc
 * @date 2020/8/6 - 14:43
 */
@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${server.port}")
    private String serverPort;

    @Value("${result}")
    private String configInfo;

    @GetMapping("/configInfo")
    public String getConfigInfo() {
        return "serverPort:" + serverPort + "\t\n\n configInfo:" + configInfo;
    }

}

三、configClient(3366)

与configClient(3355)完全一样(除了端口号为3366)

触发动态刷新的命令(命令行):
curl -X POST “http://localhost:3344/actuator/bus-refresh”

猜你喜欢

转载自blog.csdn.net/weixin_43925059/article/details/107877236