美文网首页
RefreshScope多实例刷新

RefreshScope多实例刷新

作者: 梦想又照进现实 | 来源:发表于2020-01-10 11:07 被阅读0次

    RefreshScope****多实例刷新

    适用场景

    Spring Cloud的注解@RefreshScope能够支持配置信息的刷新,对于应用在多实例部署环境下,需要配合Spring Cloud Bus来实现半自动刷新。

    操作“三板斧“”

    一、 加依赖

    主要需要添加Actuator、Config、Bus-amqp三个starter的依赖:

    [图片上传失败...(image-4bb68b-1578625631457)]

    二、设置配置项

    2.1、bootstrap.yml配置

    打开Actuator的所有监控端点,并配置bus的更新跟踪为true,方便观察整个刷新过程,具体配置在bootstrap.yml 中:

    
    spring:
    
     application:
    
     name: mc-notify-proc
    
     cloud:
    
     bus:
    
     trace:
    
     enabled: true
    
     config:
    
     uri: ${CONFIG_URL:http://config-xxx.xxx.cn}
    
    management:
    
     security:
    
     enabled: false
    
    

    2.2、MQ配置

    MQ配置默认支持RabbitMq和Kafa,具体配置参考以往的配置,注意不需配置Bus刷新的队列等信息;

    三、设置需要刷新的配置信息

    在需要刷新的Bean上添加注解@RefreshScope,这样在刷新时候整个bean重建时候会拉取最新的配置值,以健康检查的controller为示意:

    [图片上传失败...(image-734dc3-1578625631457)]

    验证刷新

    一、****Mq****默认刷新队列

    应用启动后会自动创建bus的刷新队列:

    [图片上传失败...(image-a2d20b-1578625631457)]

    注意,这些队列应用停止便会自动删除。

    二、手工刷新

    我们对任意一个实例进行刷新,其会通过mq发送消息到其余实例,进而剩余的会自动进行刷新,从而实现半自动刷新全部实例配置信息,具体验证步骤有:

    1、IDEA中命令行方式启动三个本地实例

    java -jar E:\dev\xxx\target\xxx-1.0.jar --server.port=9001

    java -jar E:\dev\xxx\target\xxx-1.0.jar --server.port=9002

    java -jar E:\dev\xxx\target\xxx-1.0.jar --server.port=9003

    2、码云上修改配置文件中的refreshMin的值

    3、调用刷新的端点

    curl -v -X POST http:// localhost.xx.xxx.com:9003/actuator/bus-refresh

    三个实例的控制台均会打印重新拉取config配置文件的日志

    [图片上传失败...(image-4efbe4-1578625631457)]

    4、postman中访问三个实例的url,其日志均打印最新的值

    [图片上传失败...(image-25ff8c-1578625631457)]

    注意事项:

    上面的配搭版本是Boot 1.5.15.RELEASE + Spring Cloud Edgware.SR3的,对于Boot2.X版本如(2.1.7.RELEASE+Greenwich.SR2配搭),配置稍有不同:

    1、打开所有监控端点

    
    #actuator启用所有的监控端点,*号代表启用所有的监控端点
    
    management:
    
     endpoints:
    
     web:
    
     exposure:
    
     include: "*"
    
     endpoint:
    
     health:
    
     show-details: ALWAYS
    
    

    2、访问的URL需要添加actuator

    curl -v -X POST http:// localhost:9003/actuator/bus-refresh

    相关文章

      网友评论

          本文标题:RefreshScope多实例刷新

          本文链接:https://www.haomeiwen.com/subject/neepactx.html