Spring Cloud Bus消息总线+rabbitmq+Gradle(Greenwich.RELEASE版本)

简介: Spring Cloud Bus消息总线+rabbitmq+Gradle(Greenwich.RELEASE版本)

准备工作


环境以及版本:


  • SpringBoot 2.1.3.RELEASE
  • SpringCloud Greenwich.RELEASE
  • Jdk 1.8
  • Gradle 5.2.1+

说明


以下改造均在子项目进行操作,父项目的github地址,下述需下载父项目用来管理公共依赖:


https://github.com/cuifuan/springcloud-tools


1.改造你的 config-server


1.1 构建配置文件 build.gradle


dependencies {
    implementation "org.springframework.cloud:spring-cloud-config-server"
    implementation "org.springframework.cloud:spring-cloud-bus"
    implementation "org.springframework.cloud:spring-cloud-starter-bus-amqp"
}

1.2 配置文件 application.yml


server:
  port: 7001
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: git地址 #例如https://github.com/cuifuan/springcloud-configuration.git
          search-paths: 仓库文件下文件夹
          default-label: master
          username: git账号
          password: git密码
    bus:
      trace:
        enabled: true
  rabbitmq:
    host: rabbitmq地址
    port: 5672
    username: rabbit账号【默认:guest】
    password: rabbit密码【默认:guest】
    virtual-host: /
eureka:
# 修改在服务中心的地址status为 ip+端口 【例如:10.0.0.100:88】
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
  client:
    serviceUrl:
      defaultZone: http://springcloud-tools:8761/eureka/
info:
  app:
    description: This is Spring Cloud remote Registration center.
    name: tools-config-server
    version: 0.0
management:
  endpoint:
    bus-refresh:
      enabled: true
  endpoints:
    web:
      exposure:
        include: refresh,bus-refresh

1.3 启动类 ToolsConfigServerAppliaction.java


package store.zabbix.config;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@EnableConfigServer
@SpringCloudApplication
@RestController
public class ToolsConfigServerAppliaction {
    public static void main(String[] args) {
        SpringApplication.run(ToolsConfigServerAppliaction.class, args);
    }
    @RequestMapping("/")
    public String home() {
        return "Hello World! My name is configserver.";
    }
}


2. 改造你的 config-client (客户端)


用来读取配置文件的


2.1 构建配置文件 build.gradle


dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation "org.springframework.cloud:spring-cloud-bus"
    implementation "org.springframework.cloud:spring-cloud-starter-bus-amqp"
}

2.2 配置文件 bootstrap.yml


spring:
  cloud:
    config:
      name: tools-config-client     #对应{application}部分
      profile: dev                  #对应{profile}部分
      #uri: http://localhost:8888/  #配置中心的具体地址
      label: master                 #对应git的分支。如果配置中心使用的是本地存储,则该参数无用
      discovery:
        enabled: true                 #开启Config服务发现支持
        service-id: config-server   #指定配置中心的service-id,便于扩展为高可用配置集群。
eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
  client:
    service-url:
      defaultZone: http://springcloud-tools:8761/eureka/

2.2 配置文件 application.yml


server:
  port: 7003
spring:
  application:
    name: tools-config-client
  cloud:
    config:
  #配置重试机制
      retry:
        initial-interval: 2000
        max-attempts: 2000
        max-interval: 2000
        multiplier: 1.2
      fail-fast: true
    bus:
      #动态刷新配置
      refresh:
        enabled: true
      #跟踪总线事件
      trace:
        enabled: true
  rabbitmq:
    host: rabbitmq地址
    port: 5672
    username: rabbit账号【默认:guest】
    password: rabbit密码【默认:guest】
#配置actuator
# 1.X版本的springboot 配置: management.security.enabled=false  已经作废
#关闭安全认证
management:
  endpoint:
    bus-refresh:
      enabled: true
  #refresh接入点显式暴露出来
  endpoints:
    web:
      exposure:
        include: refresh,bus-refresh

2.3 启动类 ConfigClientApplication.java


注意:一定不要忘了加@RefreshScop注解


package store.zabbix.configreader;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@RefreshScope
@EnableDiscoveryClient
public class ConfigClientApplication {
    /**     * http://localhost:8881/actuator/bus-refresh     */
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
    @Value("${message}")
    String message;
    @GetMapping("/hello")
    public String getMessage(){
        return message;
    }
}


3.远程配置文件


image.png


4.操作流程



这个时候的读取的配置文件已发生变化


5.需要注意的坑


  • 请确定你的rabbitmq是通的,guest账户无法通过远程ip访问
  • 注意上面的ip地址,我是这边测试使用,请更改成个人正确或者本地
  • springboot2.x之后bus刷新地址更改为 /actuator/bus-refresh
  • springboot和springcloud版本要一致,其他版本没试过
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
10月前
|
XML Java Nacos
Spring Boot 整合Nacos 版本兼容适配 史上最详细文档
本文介绍SpringBoot整合Nacos的完整流程,涵盖Nacos下载安装、配置中心与服务发现集成、版本兼容性问题及实战配置。重点解决SpringBoot 3.3.0与Nacos版本适配难题,推荐使用Spring Cloud Alibaba方案,并提供项目开源地址供参考学习。
|
10月前
|
消息中间件 存储 Java
RabbitMQ 和 Spring Cloud Stream 实现异步通信
本文介绍了在微服务架构中,如何利用 RabbitMQ 作为消息代理,并结合 Spring Cloud Stream 实现高效的异步通信。内容涵盖异步通信的优势、RabbitMQ 的核心概念与特性、Spring Cloud Stream 的功能及其与 RabbitMQ 的集成方式。通过这种组合,开发者可以构建出具备高可用性、可扩展性和弹性的分布式系统,满足现代应用对快速响应和可靠消息传递的需求。
540 2
RabbitMQ 和 Spring Cloud Stream 实现异步通信
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
11月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
1757 0
|
消息中间件 存储 Java
SpringCloud基础4——RabbitMQ和SpringAMQP
消息队列MQ、RabbitMQ、SpringAMQP高级消息队列协议、发布/订阅模型、fanout、direct、topic模式
SpringCloud基础4——RabbitMQ和SpringAMQP
|
Java 关系型数据库 开发工具
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
本文提供了解决方案,如何在IDEA中创建Spring 2.X版本的项目并使用JDK8,尽管Spring 2.X已停止维护且IDEA不再直接支持,通过修改pom.xml或使用阿里云的国内源来创建项目。
2970 0
idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
1527 3
|
消息中间件 RocketMQ
RocketMQ不同版本的下载
RocketMQ不同版本的下载
313 1
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
522 0

推荐镜像

更多