Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,总线就像一个分布式执行器,用于扩展的Spring Boot应用程序,但也可以用作应用程序之间的通信通道。目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上。
Spring Cloud Bus会向外提供一个http接口/actuator/bus-refresh。我们将这个接口配置到远程的git上,当git上的文件内容发生变动时,就会自动调用/bus-refresh接口。Bus就会通知config-server,config-server会发布更新消息到消息队列中,其他服务订阅到该消息就会信息刷新,从而实现整个微服务进行自动刷新。
文章图片
Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka。
因为我本机已安装好kafka,所以我们就将通过它来尝试使用Spring Cloud Bus对Kafka的支持,实现消息总线的功能。kafka的安装这里就不细说了。
ConfigServer实例中引入spring-cloud-starter-bus-kafka 如果使用RabbitMQ则引入spring-cloud-starter-bus-amqp
ConfigServer配置我们修改为
spring:
profiles: cs01
application:
name: configserver
cloud:
config:
server:
git:
uri: # 远程git仓库的地址
username: # 以及相应的账户名
password: # 和密码
bus:
refresh:
enabled: true
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: test
server:
port: 8071
eureka:
client:
service-url:
defaultZone: http://localhost:8081/eureka/,http://localhost:8082/eureka/,http://localhost:8083/eureka/
management:
endpoints:
web:
exposure:
include: "*"
EurekaDiscovery 中也需要引入spring-cloud-starter-bus-kafka 如果使用RabbitMQ则引入spring-cloud-starter-bus-amqp
配置文件修改为
spring:
profiles: dis01
application:
name: eurekadiscovery
cloud:
config:
discovery:
enabled: true
service-id: configserver# 注册中心的服务名
profile: dis01# 指定配置文件的环境
bus:
refresh:
enabled: true
kafka:
bootstrap-servers: localhost:9092
server:
port: 8001
eureka:
client:
service-url:
defaultZone: http://localhost:8081/eureka/,http://localhost:8082/eureka/,http://localhost:8083/eureka/
我们将git上面的配置文件也修改一下,我们为了方便测试,配置文件中我们加一个属性username
username: sl
EurekaDiscovery 控制层我们也修改一下
@RestController
@RefreshScope
public class HelloController {
@Value("${server.port}")
String port;
@Value("${username}")
String username;
@GetMapping("/hi")
public String home(@RequestParam String name) {
return "hi "+name+",i am from port:" +port+",my name is "+username;
}}
启动实例,
文章图片
文章图片
我们修改一下git下的文件
将username分别修改成sl007,sl008,POST请求http://localhost:8071/actuator/bus-refresh
重新请求发现配置文件已经刷新了
文章图片
文章图片
【SpringCloud浅尝(六)——Bus】
推荐阅读
- SpringCloud浅尝(三)——Eureka
- SpringCloud浅尝(十)——Sleuth ZipKin
- SpringCloud浅尝(九)——Hystrix Dashboard
- SpringCloud浅尝(八)——Hystrix
- SpringCloud(三)多节点高可用Eureka注册中心集群
- springcloud搭建eureka服务
- SpringCloud之 Eureka 的服务治理
- 搭建微服务(服务提供者与服务消费者)
- springcloud 服务调用成功几次之后都会失败