上次配置中心启动命令为consul agent -dev,这样数据不会持久化,重新启动consul后key/value配置的信息会丢失。

实现数据持久化,使用如下命令启动,-data-dir 为数据保存目录:

consul agent -server -bootstrap-expect 1 -data-dir E:\software\consul_1.9.4\data -node=consulServer1 -bind 127.0.0.1 -ui -rejoin  -client 0.0.0.0

在之前系列基础上,在主工程里添加一个common模块,提供 Redis 工具类, 从Consul Config 配置中心读取 Redis 配置,然后在订单服务里引用Common模块。

1、maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot中的redis依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- redis依赖commons-pool-->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>

因为要独立编译,所以要去掉<dependencyManagement>,另外启动类也要删除掉。

2、调整订单服务的maven依赖,添加 Consul Config 和 common 模块。

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency><groupId>com.example.consul</groupId><artifactId>common</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope>
</dependency>

3、订单服务配置文件调整

server:port: 8802
spring:application:name: orderserviceprofiles:active: devcloud:consul:host: localhostport: 8500discovery:service-name: orderserviceconfig:enabled: trueformat: PROPERTIESprefixes: configdefaultContext: orderserviceprofileSeparator: ','data-key: dataconfig:import: optional:consul:localhost:8500

4、在 Consul Config 配置中心添加 Redis 相关属性配置

key设置为:

config/orderservice,dev/data

value设置为:

spring.redis.host=127.0.0.1
#Redis服务器连接端口
spring.redis.port=6379
#Redis服务器连接密码(默认为空)
spring.redis.password=
#关闭超时时间
#配置文件中出现spring.redis.lettuce.pool属性的时候,
# 才会使用连接池,才需要maven中配置commons-pool 这个依赖
spring.redis.lettuce.shutdown-timeout=100
#连接池最大连接数(使用负值表示没有限制)
spring.redis.lettuce.pool.max-active=8
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.lettuce.pool.max-wait=-1
#连接池中的最大空闲连接
spring.redis.lettuce.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.lettuce.pool.min-idle=2
#连接超时时间(毫秒)
spring.redis.timeout=200

5、在订单服务中实现一个API接口,测试 Redis 缓存读写功能。

// redis中存储的过期时间60s
private static int ExpireTime = 60;@Resource
private RedisUtil redisUtil;@GetMapping("set")
public boolean redisset(String key) {return redisUtil.set(key,"Alice",ExpireTime);
}@GetMapping("get")
public Object redisget(String key) {return redisUtil.get(key);
}

6、API接口测试

首先,设置缓存

http://localhost:8802/set?key=key1,返回 true,设置成功

然后,读取缓存

http://localhost:8802/get?key=key1,返回 Alice

7、对于配置类的重用实现方法,从Consul Config 配置中心动态读取属性,和从服务的配置文件中读取是一样,所以配置类上的注解一样有效。

@Configuration
@ConfigurationProperties

举个例子,首先写个配置类,

@Configuration
@ConfigurationProperties(prefix = "order")
public class OrderConfig {private String name;private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "OderConfig{" +"name = '" + name + '\'' +", address = '" + address + '\'' +'}';}
}

在配置中心添加键值对:

order.name=book
order.address=beijing

开发一个API接口,

@Autowired
private OrderConfig orderConfig;
@GetMapping("/config")
public String config() {return orderConfig.toString();
}

最后访问接口,测试配置类是否生效:

http://localhost:8802/config

返回信息:

OderConfig{name = 'book', address = 'beijing'}

SpringCloud Consul Config 配置中心 (二)相关推荐

  1. SpringCloud Consul Config 配置中心(一)

    用 Consul 存储键值对,实现分布式配置中心,支持不需要重启配置中心服务就能读取更新后的属性. 在前面开发基础上,稍作调整,暂只调整日志服务. 1.在日志服务里添加maven依赖 <depe ...

  2. springcloud:config配置中心(多配置文件引入)

    解决客户端引入多个文件问题. 比如我一个服务需要加载公共的配置(数据库/redis连接),还要加载私有配置,我希望把他们放两个私有文件中分别加载.可是发现client只会读取bootstrap.pro ...

  3. SpringCloud使用Consul作为配置中心

    目录 一.前言 二.初始化配置 三.代码练习 1. 创建cloud-consul-configdemo8007项目 2. 修改配置 3. 添加主启动类 4. 读取配置文件 5. 添加controlle ...

  4. Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用】

    SpringCloud学习目录点击跳转对应的文章 Java之 Spring Cloud 微服务搭建(第一个阶段)[一][SpringBoot项目实现商品服务器端是调用] Java之 Spring Cl ...

  5. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  6. SpringCloud微服务应用-config配置中心(介绍、搭建、动态刷新、测试)

    文章目录 前言 一.传统应用配置痛点 二.Config 配置中心介绍 三.服务端Config Server搭建 1.pom依赖 2.application启动类配置 3.application.yml ...

  7. consul作为配置中心

    Conusl可以作为注册中心,也可以作为配置中心. 作为配置中心,使用起来也很方便,大多数都是配置. Consul的安装这里不说了,主要是说明java后端怎么使用,所以本次采用windows版本的co ...

  8. docker 安装nacos_19.SpringCloud实战项目-SpringCloud整合Alibaba-Nacos配置中心

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

  9. springcloud(七):配置中心svn示例和refresh

    上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...

最新文章

  1. 【数字信号处理】基本序列傅里叶变换总结 ( 单位脉冲序列 δ(n) | {1} 序列 | e^jωn 序列 | cosωn 序列 | sinωn 序列 | a^nu(n) | 矩形窗函数 ) ★★★
  2. 线程的调度、优先级和亲缘性——Windows核心编程学习手札系列之七
  3. 81. 搜索旋转排序数组 II
  4. ABAP help click F1
  5. android listview item置顶,ListView的item置顶
  6. 如何在Tomcat中设置JNDI数据库连接池-Spring教程示例
  7. 标准make变量 MAKE_VERSION, CURDIR
  8. Java虚拟机------垃圾收集器
  9. 服务器怎么做虚拟空间,服务器怎么做虚拟空间
  10. NUC1305 哥德巴赫猜想【筛选法】
  11. 分享15款很棒的 JavaScript 开发工具
  12. VISIO——word中插入visio图片 图片边缘空白裁剪
  13. (web前端每日一练)用JS制作一个能够在桌面运行的倒计时插件
  14. html的浮动跟标准流,网页布局的 标准流 浮动流 与 定位流
  15. 将电脑多余空间分给其他盘
  16. selenium+云打码+百度ocr爬取360的电话号码标记
  17. linux查看文件内容行数,Linux 中如何查看文件的行数,字数,字节数
  18. 蓝桥 百亿富翁 stack<Type> 栈
  19. Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝
  20. 16进制转double dotnet_IEEE 16进制字符串转化为double类型

热门文章

  1. 2020_12-电路理论框架复习思考-基础篇
  2. cr2032和br2032区别_钮扣电池CR2016和CR2032有什么区别?
  3. 领航机器人广告段子_教育机器人广告宣传语_段子网收录最新段子
  4. [转载]拉格朗日乘子法如何理解?
  5. CLion 下使用 Valgrind 内存检查 [Mac;Linux;Window多平台]
  6. Python数据处理 PCA/ZCA 白化(UFLDL教程:Exercise:PCA_in_2DPCA_and_Whitening)
  7. DELPHI PROTOBUF免费的开源支持库fundamentals5
  8. $.getJSON()应用
  9. 基于SOA架构集成spring-boot+mybatis+dubbo+Druid+zookeeper
  10. 032——VUE中表单控件处理之复选框的处理