SpringCloud浅尝(六)——Bus

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

重新请求发现配置文件已经刷新了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值