SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版 (4)

:上面这些与spring-cloud相关的属性必须配置在bootstrap.properties中,config部分内容才能被正确加载。因为bootstrap.properties的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties。需要注意的是eureka.client.serviceUrl.defaultZone要配置在bootstrap.properties,不然客户端是无法获取配置中心参数的,会启动失败!

application.properties配置文件新增的配置基本和服务端的一样,完整的配置如下:

spring.application.name=springcloud-config-bus-client server.port=9006 management.endpoints.web.exposure.include=refresh spring.cloud.config.failFast=true spring.cloud.bus.trace.enabled = true spring.rabbitmq.host:127.0.0.1 spring.rabbitmq.port:5672 spring.rabbitmq.username:guest spring.rabbitmq.password:guest

配置说明:

spring.application.name: 这个是指定服务名称。

server.port:服务指定的端口。

management.endpoints.web.exposure.include:暴露刷新的地址。

spring.cloud.bus.enabled:是否启用springcloud config bus。

spring.cloud.bus.trace.enabled:开启跟踪总线事件。

spring.rabbitmq.host: rabbitmq的地址。

spring.rabbitmq.port: rabbitmq的端口。

spring.rabbitmq.username: rabbitmq的用户名。

spring.rabbitmq.password: rabbitmq的密码。

程序主类代码,和之前的基本一致。代码如下:

主程序代码示例:

@EnableDiscoveryClient @SpringBootApplication public class ConfigClientApplication { public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); System.out.println("配置中心客户端启动成功!"); } }

控制层代码:

@RestController @RefreshScope public class ClientController { @Value("${word}") private String word; @RequestMapping("/hello") public String index(@RequestParam String name) { return name+","+this.word; } }

完成上述的项目开发之后,我们把上面的项目复制一下,项目名称为springcloud-config-bus-client2,然后把它的端口改为9007即可。

到此,客户端的项目也就构建完成了。

功能测试

完成如上的工程开发之后,我们来进行测试。

我们首先启动RabbitMQ服务,然后再依次启动springcloud-config-bus-eureka、springcloud-config-bus-server、springcloud-config-bus-client和springcloud-config-bus-client2这四个项目。其中9005是服务端springcloud-config-bus-server的端口,9006是第一个客户端springcloud-config-bus-client的端口,9007是是第二个客户端springcloud-config-bus-client2的端口。

全局刷新测试

启动成功之后,在浏览器输入:

:9006//hello?name=pancm

界面返回:

pancm,hello

在浏览器输入:

:9007//hello?name=xuwujing

界面返回:

xuwujing,hello

可以正常得到服务端configtest-pro.properties的配置信息。

然后在把configtest-pro.properties的配置更改为:

word=hello!!

然后在使用Postman工具进行发起POST请求,只不过这次的地址是服务端的地址和端口。

使用POST请求如下地址:

:9005/actuator/bus-refresh

然后我们再浏览器输入:

:9006//hello?name=pancm

界面返回:

pancm,hello!!

浏览器输入:

:9007//hello?name=pancm

界面返回:

xuwujing,hello!!

示例图:

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

局部刷新测试

完成上述全局刷新测试之后,有时我们只想刷新部分微服务的配置,那么便可以使用/actuator/bus-refresh/{destination}端点的 destination 参数来定位要刷新的应用程序。

我们继续更改configtest-pro.properties的配置为:

word=hello!!!

然后依旧使用Postman工具发送post请求,地址为:

:9005/actuator/bus-refresh/springcloud-config-bus-client2

然后我们再浏览器输入:

:9006//hello?name=pancm

界面返回:

pancm,hello!!

浏览器输入:

:9007//hello?name=pancm

界面返回:

xuwujing,hello!!!

发现只有springcloud-config-bus-client2客户端的配置更新,另一个springcloud-config-bus-client没有进行刷新,达到了我们的目的。

示例图:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyxpd.html