SpringCloud学习笔记-自动刷新配置-SpringCloud-Bus(消息总线)
如果修改配置后,config-server通知order修改配置。
消息队列(RabbitMQ)
Bus 用来操作消息队列。
第一步添加依赖(config-server)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
spring-cloud-starter-bus-kafka 这是kafka的依赖,上面的是RabbitMq的依赖
说明:https://blog.csdn.net/jack281706/article/details/73742522
第二步添加配置(config-server)
management:
endpoints:
web:
exposure:
include: bus-refresh #include: "*" #这个也可以
需要注意的是 springboot2.0于1.5的配置不一样。
我之前的配置是这样的,访问 http://localhost:8066/actuator/bus-refresh 但是实现不了自动刷新,修改为上面的就可以了
management:
endpoints:
web:
exposure:
exclude: "*"
说明:https://ask.csdn.net/questions/684123
第三步下载安装RabbitMQ
(自己下载安装,需要下载erlang 语言包配置环境变量)
安装链接:http://blog.csdn.net/hzw19920329/article/details/53156015
第四步给eureka-client服务(order)添加依赖
<!--bus 自动刷新配置-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
第五步给需要获取配置的文件上加注解
@RefreshScope
@Configuration
@ConfigurationProperties("XXXXX")
package com.hx.order.controller;
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("/env")
@RefreshScope
public class EnvController {
@org.springframework.beans.factory.annotation.Value("${env}")
private String env;
@GetMapping("/print")
public String print(){
return env;
}
}
重启congfig-server 与 order 服务。
在git上面修改配置文件。访问http://localhost:8066/actuator/bus-refresh
就可以重新刷新配置文件。
可以在github上班的WebHooks 上面配置 http://外网地址/actuator/bus-refresh
Content-Type:application/json
但是码云上面配置WebHooks 就会发生错误:
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 366] (through reference chain: java.util.LinkedHashMap["commits"])]
因为它不能配置Content-Type:application/json。
但是我改成自己的gitlab的时候重启config-server和order服务的时候出现下面错误。
unable to find valid certification path to requested target
解决方案:https://blog.csdn.net/qq_40680190/article/details/90106933
就这样就解决的报错的问题,因为在gitLab上面没有找到WebHooks,也就没有配置。它也实现了自动刷新配置。
上一篇: tomcat负载均衡-nginx
下一篇: Nginx负载均衡详解
推荐阅读
-
SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
-
SpringCloud学习笔记-自动刷新配置-SpringCloud-Bus(消息总线)
-
SpringCloud2020学习笔记12——SpringCloud Bus 消息总线
-
十七、SpringCloud学习笔记之Bus 消息总线
-
SpringCloud学习笔记【十三】Spring Cloud Bus消息总线
-
springcloud config 集成RabbitMQ 和 消息总线Bus 实现服务配置实时刷新
-
17.SpringCloud学习笔记--Bus消息总线
-
SpringCloud框架学习笔记(八)-- bus消息总线(已弃用)
-
Spring Cloud(6)消息总线 Spring Cloud Bus + Spring Cloud Config 实现全自动刷新集群配置
-
Spring Cloud 进阶之路 -- 消息总线 Spring Cloud Bus 配置手动刷新和动态自动刷新