SpringCloud2000.0.1 使用利用rabbitmq和WebHooks实现Config Client客户端与Config Server服务端的配置自动刷新(包括遇坑)

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=*

然后测试,大功告成!!!

版权声明:
作者:十下
链接:http://blog.edkso.cn/?p=996
来源:十下博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>