SpringCloud浅尝(六)——Bus

Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,总线就像一个分布式执行器,用于扩展的Spring Boot应用程序,但也可以用作应用程序之间的通信通道。目前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上。
Spring Cloud Bus会向外提供一个http接口/actuator/bus-refresh。我们将这个接口配置到远程的git上,当git上的文件内容发生变动时,就会自动调用/bus-refresh接口。Bus就会通知config-server,config-server会发布更新消息到消息队列中,其他服务订阅到该消息就会信息刷新,从而实现整个微服务进行自动刷新。
SpringCloud浅尝(六)——Bus
文章图片


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; }}

启动实例,
SpringCloud浅尝(六)——Bus
文章图片

SpringCloud浅尝(六)——Bus
文章图片

我们修改一下git下的文件
将username分别修改成sl007,sl008,POST请求http://localhost:8071/actuator/bus-refresh
重新请求发现配置文件已经刷新了
SpringCloud浅尝(六)——Bus
文章图片

SpringCloud浅尝(六)——Bus
文章图片


【SpringCloud浅尝(六)——Bus】

    推荐阅读