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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
消息中间件 存储 Java
SpringCloud基础4——RabbitMQ和SpringAMQP
消息队列MQ、RabbitMQ、SpringAMQP高级消息队列协议、发布/订阅模型、fanout、direct、topic模式
SpringCloud基础4——RabbitMQ和SpringAMQP
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14834 26
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
458 15
|
3月前
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
60 0
|
3月前
|
Java Spring
【Azure 服务总线】Spring Cloud 的应用 使用Service Bus 引起 org.springframework.beans.BeanInstantiationException 异常,无法启动
【Azure 服务总线】Spring Cloud 的应用 使用Service Bus 引起 org.springframework.beans.BeanInstantiationException 异常,无法启动
|
4月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
99 3
|
4月前
|
消息中间件 Java Nacos
通用快照方案问题之通过Spring Cloud实现配置的自动更新如何解决
通用快照方案问题之通过Spring Cloud实现配置的自动更新如何解决
74 0
|
4月前
|
缓存 监控 Java
通用快照方案问题之Spring Boot Admin的定义如何解决
通用快照方案问题之Spring Boot Admin的定义如何解决
59 0
|
4月前
|
监控 NoSQL Java
通用快照方案问题之Martin Flower提出的微服务之间的通信如何解决
通用快照方案问题之Martin Flower提出的微服务之间的通信如何解决
41 0