• spring cloud


    启动config-server,启动成功后就不需要在管了;

    在config-client做些修改:

    在使用的controller或service的类上加上一个注解@RefreshScope

    在pom中加入依赖:

          <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    至此,准备工作完毕

    接下来修改配置文件中的属性值,

    无需重启congif-server,他会自动更新值;

    接下来调用config-client的refresh方法,

    curl -X POST http://127.0.0.1:9020/refresh

    在config-client控制台会有日志刷新,大意思是重新连接config-server,刷新取值;接下来就可以验证结果,期间无需重启服务;

    {
    "timestamp": 1545295648687,
    "status": 401,
    "error": "Unauthorized",
    "message": "Full authentication is required to access this resource",
    "path": "/refresh"
    }

    需要加上配置:

    management.security.enabled: false

    方法调用成功后,会返回修改的记录

    此方法不需要重启应用服务,可以实现配置的手动刷新,

    倘若,一个服务有多个节点,此方法必须要依次刷新服务。

    配置的批量刷新

    借助MQ可以实现一次方法调用,实现整个服务的配置刷新

    首先安装或使用已经有的rabbitmq,

    安装rabbitmq:https://www.cnblogs.com/chenglc/p/10154444.html

    在应用服务的配置中加上rabbitmq的配置:

    spring:
      rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest

    还需要加入依赖:

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>

    启动项目后,控制台的日志输出会有这样一行:

    2018-12-21 16:05:26.747  INFO 11377 --- [           main] o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/bus/refresh],methods=[POST]}" onto public void org.springframework.cloud.bus.endpoint.RefreshBusEndpoint.refresh(java.lang.String)

    就是调用此方法:

    127.0.0.1:9020/bus/refresh

    就可以实现一次性刷新整个服务;

    建议:在config-server中加入一样的配置,每次更新配置文件后,让config-server来担任通知方

    存在的问题:如果调用127.0.0.1:9020/bus/refresh,此地址来刷新服务,则127.0.0.2:9020,节点也不会做通知,不会更新服务的配置信息

    到此,实现了配置的半自动更新;

    配置的全自动更新

    要做到配置信息的自动更新,只差一步,那就是修改配置文件后,自动调用刷新方法

    这只需要在github、gitlab或码云上做配置即可:

    以码云为例:

    到此就可以实现,配置的自动刷新

  • 相关阅读:
    python函数练习题2
    python函数练习题1
    数字是否是10的整数倍
    关于循环的作业:登陆程序
    用for循环写这段代码
    while循环语句
    在CentOS8 上安装Python3
    时隔半年再写购物车程序并改进
    vue上传
    根据生日计算年龄
  • 原文地址:https://www.cnblogs.com/chenglc/p/10150352.html
Copyright © 2020-2023  润新知