程序员

springcloud之bus

2021-01-10  本文已影响0人  GG_lyf

前言

  在使用了配置中心之后,会出现在这种要求:即开发人员想在配置文件中添加一些自定义的东西,配置文件都在云端,肯定好改,但是在修改之后怎么办?重启微服务?但是在这时候有用户在使用这个服务,重启微服务工程中就会出现用户的数据丢失,用户的体验极差。会遭到用户的投诉。这该怎么办呢?bus就是为了解决这个问题的。它可以用消息队列的发布订阅模型,让所有为服务来订阅这个事件,当这个事件发生改变了,就可以通知所有微服务去更新它们的内存中的配置信息。这时你只需要在springcloud Config Server端发出refresh,就可以触发所有微服务更新了。


开搞

1.使用之前创建的config微服务

2.添加依赖

<!--bus监听rabbitMq-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-bus</artifactId>
   </dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>

3.添加yml的内容

spring:
  rabbitmq:
    addresses: localhost

management:    #暴露触发消息总线的地址
  endpoints:
    web:
      exposure:
        include: bus-refresh

4.被代理的微服务端添加依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

5.在云端添加监听消息队列的配置

spring:
  rabbitmq:
    host: localhost

6.在云端的配置文件中添加自定义的东西,例如

ip:
  127.0.0.1吃的吃大餐

7.在微服务的controller中使用@Value("${ip}"),获取云端的自定义配置,并在某一个方法中输出进行查看

8.使用postman发送http://127.0.0.1:config的端口/actuator/bus-refresh,并且开始进行端口的访问

发送请求

9.发现想要的自定义配置并没有输出出来,是因为在那个ciontroller上少个@RefreshScope

@RefreshScope
@RestController
@RequestMapping("test")
public class ConsumeController {

  @Autowired
  private RestTemplate restTemplate;

  @Value("${ip}")
  private String ip;

  @GetMapping("/showInfo")
  public String showInfo() {
    System.out.println(ip);
    return restTemplate.getForObject("http://client/home", String.class);//获取某一个客户端的那个方法
  }

}

10.添加之后重启微服务,并且在冲完气之后修改云端的自定义配置,重新访问


云端的 访问的
上一篇 下一篇

猜你喜欢

热点阅读