SpringCloud Consul Config Configuration Center(2)

構成センターの最後の起動コマンドは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'}

 

 

 

 

おすすめ

転載: blog.csdn.net/suoyx/article/details/115021618