博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springcloud配置动态更新
阅读量:4677 次
发布时间:2019-06-09

本文共 3046 字,大约阅读时间需要 10 分钟。

在实现springcloud的配置中心后,我们需要考虑的就是动态刷新配置。如果考虑只有一个客户端,我们可以在配置文件发生push操作的时候添加webhook,使用webhook发送刷新的post请求到客户端。但当客户端很多的情况,就需要请求多个客户端,这是不现实的。所以我们就想到直接刷新配置中心,直接由配置中心通知各个客户端获取最新的配置。下面就记录一下今天搞了一天的使用springcloud bus整合kafka(或者rabbitmq)实现动态刷新,本地自己搞的玩的,所以是windows环境哈,linux大同小异。因为之前项目就用到kafka,新项目启动项直接拿过来用,所以就没使用rabbitmq,想用rabbitmq的同学可以另行百度哈。

一、因为kafka强依赖zookeeper,所以首先要安装zookeeper和kafka

 安装zookeeper

  1.下载压缩包https://www.apache.org/dyn/closer.cgi/zookeeper并解压到D盘,我下载的是最新的稳定版zookeeper-3.4.12.tar.gz

  2.修改环境变量,添加变量ZOOKEEPER_HOME变量值D:\zookeeper-3.4.12  修改变量Path变量值添加%ZOOKEEPER_HOME%\bin;

  3.在D:\zookeeper-3.4.12下新建文件夹data和log,然后将D:\zookeeper-3.4.12\conf下的zoo_sample.cfg复制一份到当前目录命名为zoo.cfg并添加

    dataDir=D:/zookeeper-3.4.12/data

    dataLogDir=D:/zookeeper-3.4.12/log

  4.用管理员身份打开cmd窗口,输入zkServer,即启动zk服务

 安装kafka

  1.下载压缩包http://kafka.apache.org/downloads任意下载二进制文件并解压到D盘,我下载的是kafka_2.12-1.1.0。

  2.在kafka目录下新建文件夹kafka_logs,然后打开config目录下的server.properties配置文件,修改log.dirs=D:/kafka_2.12-1.1.0/kafka_logs。

  (有的文章里有说要执行bin\windows\zookeeper-server-start.bat config\zookeeper.properties,这是在第一步中没有cmd运行zkServer,如果有运行,这里就不需要这一步了)

  3.打开cmd窗口在kafka目录下输入bin\windows\kafka-server-start.bat config\server.properties启动kafka。

  4.再打开一个cmd窗口(第三个了),在kafka目录下输入bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testNew创建topic,创建成功是这个样子:

    

  5.继续输入bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic testNew创建生产者

  6.再打开一个cmd窗口(第四个额),再kafka目录下输入bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic testNew --from-beginning创建消费者

  7.测试,在生产者输入,在消费者可以显示

    例如:生产者输入welcome to kafka

        

       消费者即可收到消息:

        

二、更改config-server项目和eureka-client项目(可以是config-client,一样,我只是把eureka-client改造成了config-client)

 config-server改造:

  1.pom添加依赖:   

1        
2
org.springframework.boot
3
spring-boot-starter-actuator
4
5
6
7
org.springframework.cloud
8
spring-cloud-starter-bus-kafka
9

  2.application.properties配置文件添加:

1 spring.cloud.stream.kafka.binder.zk-nodes=localhost:21812 spring.cloud.stream.kafka.binder.brokers=localhost:9092 3 management.security.enabled=false

eureka-client改造:

  1.pom添加依赖:

1        
2
org.springframework.boot
3
spring-boot-starter-actuator
4
5
6
7
org.springframework.cloud
8
spring-cloud-starter-bus-kafka
9

  2.获取配置的controller上添加注解:@RefreshScope

三、重启config-server和eureka-client项目,然后修改配置文件内容后,用postman调用config-server的bus/refresh请求:配置中心ip:端口/bus/refresh。这个时候可以发现eureka-client使用的配置是最新的。

注:刷新过程总结下

  1.config-server接收到bus/refresh请求后会下载最新配置并通知消息总线bus

  2.消息总线通知各个客户端配置有更新

  3.各个客户端会重新请求config-server获取最新配置

 

  

  

  

 

  

转载于:https://www.cnblogs.com/ryan304/p/9134783.html

你可能感兴趣的文章
java word导入导出工具类
查看>>
Castle ActiveRecord学习实践(7)级联
查看>>
赋值运算符重载函数
查看>>
POJ_1733 Parity game 【并查集+离散化】
查看>>
别在需要制度和文化的时候表错了情
查看>>
jupyter 快捷键
查看>>
SpringBoot打包项目成war包,并部署到服务器的tomcat上
查看>>
前端面试
查看>>
判断文件的字符编码
查看>>
VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?
查看>>
JAVA操作数据库插入中文表中显示乱码的解决方法
查看>>
SSM综合练习crm
查看>>
SQL ---子查询
查看>>
改进delphi中的RoundTo函数
查看>>
Microsoft Visual SourceSafe使用经验
查看>>
威尔逊定理及证明
查看>>
[LeetCode] Peeking Iterator
查看>>
Understanding Unix/Linux Programming-用户程序play_again4.c
查看>>
算法总结
查看>>
指数平滑法
查看>>