構成センターの最後の起動コマンドはconsulagent -devであるため、データは保持されず、consulを再起動するとキー/値の構成情報が失われます。
データの永続性を実現するには、次のコマンドを使用して開始します。-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
前のシリーズに基づいて、メインプロジェクトに共通モジュールを追加し、Redisツールクラスを提供し、Consul Config構成センターからRedis構成を読み取り、注文サービスで共通モジュールを参照します。
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依存関係を調整し、ConsulConfigと共通モジュールを追加します。
<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: orderservice
profiles:
active: dev
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: orderservice
config:
enabled: true
format: PROPERTIES
prefixes: config
defaultContext: orderservice
profileSeparator: ','
data-key: data
config:
import: optional:consul:localhost:8500
4. Consul Config ConfigurationCenterにRedis関連の属性構成を追加します
キーは次のように設定されます。
config / orderservice、dev / data
値は次のように設定されます。
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. Orderサービスに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、逆回アリス
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;
}
@Override
public 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'}