image.png
1.首先我们需要添加依赖
添加的依赖除了eureka-client还需要有配置中心,actuator还有一个就是基于rabbitmq的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.配置
我们需要在启动类配置为Eureka的客户端和配置中心
image.png
配置文件中与config-server保持一致,当然还需要修改端口号,然后添加上rabbitmq的配置:
image.png
image.png
3.启动服务
看依赖我们知道首先得启一个Eureka-server,然后还得安装一个rabbitmq并启动,然后再启动这个配置中心,都启动成功之后,我们访问接口:
image.png
证明这个配置中心是启动成功的
然后访问actuator接口:
image.png
上面我们同样可以看到 actuator/refresh接口,但是仔细看还发现了 busrefresh 这个接口就是批量去刷新接口的地址。
4.创建bug config 客户端
需要配置依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
可以看到bus的客户端我们需要有config,bus-amqp还有eureka客户端,然后启动类仅配置一个eureka的服务发现客户端即可
在配置文件中基本照搬之前的config-client的配置即可,然后需要修改的就是模块名称,端口号,配置中心serviceId,然后添加rebbitmq的配置:
server.port= 62002
spring.application.name=config-bug-client
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-bus-server
spring.cloud.config.name= config-consumer
spring.cloud.config.profile= dev
encrypt.key=20210906
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
myWords: ${words}
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
eureka.client.service-url.defaultZone = http://localhost:2001/eureka/
新建一个controller用于测试:
package com.example.configbusclient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/refresh")
@RefreshScope
public class RefreshController {
@Value("${myWords}")
private String words;
@GetMapping("/words")
public String getWords(){
return words;
}
}
配置好之后,我们进行测试工作,我们以并行的形式分别启动两个不同端口号的config-bug-client,我这边是启动了一个62001和62002的:
image.png
image.png
然后再在git仓库中修改dev的配置文件中的words变量,之后调用busrefresh接口进行刷新,可以发现无论是调用bus配置中心的还是下面任意一个节点的这个接口,都可以达到批量更新接口的目的。