1.简介
1.1 概述
Spring Cloud Bus links nodes of a distributed system with a lightweight message broker. This can then be used to broadcast state changes (e.g. configuration changes) or other management instructions. AMQP and Kafka broker implementations are included with the project. Alternatively, any Spring Cloud Stream binder found on the classpath will work out of the box as a transport.
Spring Cloud Bus将轻量级消息代理程序链接到分布式系统的节点。然后可以将其用于广播状态更改(例如配置更改)或其他管理指令。该项目包括AMQP和Kafka broker 实现。另外,在类路径上找到的任何Spring Cloud Stream绑定程序都可以作为传输工具使用。
1.2 特点
spring cloud bus 使用消息队列来作为分布式环境中信息沟通的工具,通常用于广播状态变更或配置更改等。
2.演示环境
- JDK 1.8.0_201
- Spring Boot 2.2.0.RELEASE、Spring Cloud Hoxton.RELEASE
- 构建工具(apache maven 3.6.3)
- 开发工具(IntelliJ IDEA )
- Kafka 2.11-2.0.0
3.演示代码
总体结构说明:
- config-repo: 配置文件仓库
- ofc-bus-eureka: 注册中心,config-server 和 config-client 都注册到配置中心上
- ofc-bus-config-server: 集成了 spring-cloud-bus 实现的 config-server
- ofc-bus-config-client: 集成了 spring-cloud-bus 实现的 config-client
3.1 config-repo
管理配置文件,内部包含四个配置文件,分别是:soulballad.properties、soulballad-dev.properties、soulballad-prod.properties、soulballad-test.properties
内容如下:
# soulballad.properties
my.name=soulballad
# soulballad-dev.properties
my.name=soulballad-dev
# soulballad-prod.properties
my.name=soulballad-pro
# soulballad-test.properties
my.name=soulballad-test
3.2 ofc-bus-eureka
3.2.1 代码说明
eureka-server 服务端,提供 config-server 和 config-client 注册服务。
3.2.2 maven 依赖
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
3.2.3 配置文件
application.yml
server:
port: 11070
spring:
application:
name: ofc-bus-eureka
eureka:
instance:
hostname: localhost # 主机名
prefer-ip-address: true # 优先使用ip
instance-id: ${
eureka.instance.hostname}:${
spring.application.name}:${
server.port} # 实例id
client:
register-with-eureka: false # eureka自我注册
fetch-registry: false # 是否从注册中心获取注册信息
service-url:
defaultZone: http://${
eureka.instance.hostname}:${
server.port}/eureka/ # 注册中心地址
3.2.4 java代码
OfcBusEurekaApplication.java
@EnableEurekaServer
@SpringBootApplication
public class OfcBusEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(OfcBusEurekaApplication.class, args);
}
}
3.3 ofc-bus-config-server
3.3.1 代码说明
config-server 服务端,注册到 eureka 上。配置 spring-cloud-bus,使用 kafka 作为消息队列。
3.3.2 maven 依赖
pom.xml
<dependencies>
<dependency>
<groupId>