SpringCloud2000.0.1 使用利用rabbitmq和WebHooks实现Config Client客户端与Config Server服务端的配置自动刷新(包括遇坑)
零、版本
SpringCloud2000.0.1
一、依赖
服务端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!--这个依赖,在以前的版本中是不需要的,但是我在后面使用的过程中,遇到问题查不出来就去查了官方文档,
这里也是一个坑,后面再说-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-monitor</artifactId>
</dependency>
客户端依赖
<!--官网教的,要添加这个依赖,不然找不到值-->
<!--新版本的springcloud把bootstrap上下文组件默认移除了,设置bootstarp.yml必须引入此依赖,这里是一个坑
更多的参见我的另一篇文章:https://blog.edkso.cn/?p=981-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
二、配置
服务端配置
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://github.com/1498047434/Microservice_testing_for_orderFood.git
# username: xxxx
# password: xxxx
basedir: /Volumes/Programming/Projects/Learn/LearnSpringCloud/config/localGitConfig
label: config-repo #这里有个坑,如果用仓库分支,需要配置,网上有很多文章的参考无效
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
server:
port: 8888
# 下面的配置,是把路径暴露出去,可以通过后面的(到后面就知道了)的配置,在git(github gitee等)仓库上面的配置变化后,提交post请求,去更新rabbitmq消息,让客户端及时更新!
management:
endpoints:
web:
exposure:
include: "*" #暴露所有路径
客户端配置
这里没什么要说的,label: config-repo同样是指定仓库分支, profile: dev是配置的后缀
spring:
application:
name: order
cloud:
config:
discovery:
enabled: true
service-id: CONFIG
profile: dev
label: config-repo
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
客户端测试controller
@RestController
@RequestMapping("/config")
@RefreshScope
public class EnvController {
@Value("${girl.name}")
private String girlName;
@GetMapping("/girlName")
public String girlName(){
return girlName;
}
}
在仓库上配置环境
中间测试说明
启动eureka、服务端、客户端,完毕!(中间也遇到了问题,慢慢解决的)大家配到这里也可能遇到了不少问题
在这个接口也获取到了配置文件,
在客户端的测试controller也测试成功
在这个节点上,修改配置文件后,客户端测试controller并获取不到更改后的数据,所以还少一项配置
远程仓库Webhooks配置(这里遇到大坑)
在我们配置Webhooks之前,也可以手动发起请求,更新消息队列
curl -v -X POST “http://config-server.frp.edkso.cn:8000/actuator/busrefresh”
然后刷新controller接口,会更新信busrefresh息,在这里我就不展示了(说一下在这里遇到的坑)
以前的版本是bus-refresh路径,但是我测试和查找了文章都行,干脆http://config-server.frp.edkso.cn:8000/actuator 看一下提示,果然改了,改成了busrefresh!
下面我们正式来配置Webhooks,
http://config-server.frp.edkso.cn:8000/actuator/busrefresh 直接配置这个地址是不行的(,目前我还不知道,为什么,我这都已经内网穿透了肯定不是不支持外网的事情,而且github的webhosks也是发的post请求,我在postman发起post请求是可以的,有时间深入源码吧)
**插入一个内网穿透:**webhosks必须使用外网,这个不多解释,内网穿透请参见网络文章吧,我建议直接自己搭建一个,以后不一定什么时候用,包括外网远程,我是自己搭建的内网穿透,内网穿透我用的frp,github社区有源码和官方文档,我就是按照官方文档配置的,完美流畅,我越来越喜欢看官方文档了,网上好多文章c+v,当误时间
参考了其他文章,说配置这个路径 http://config-server.frp.edkso.cn:8000/monitor
但是还是无法解决!
怎么办,我又去查了官方文档!解决了!
官网的意思是
引入这个依赖,并且http://config-server.frp.edkso.cn:8000/monitor 要加上path={application},并且支持通配符!
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-monitor</artifactId>
</dependency>
最后路径就是http://config-server.frp.edkso.cn:8000/monitor?path=*
然后测试,大功告成!!!
版权声明:
作者:十下
链接:https://blog.edkso.cn/?p=996
来源:十下博客
文章版权归作者所有,未经允许请勿转载。