VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Consul 入门实战(3)--Spring Cloud Consu 使用

Cousul 可以作为注册中和配置中心来使用,本来主要介绍 Spring Cloud 整合 Consul 的使用,文中所使用到的软件版本:Java 1.8.0_191、Consul 1.11.1、Spring Boot 2.3.12.RELEASE、Spring Cloud Hoxton.SR12。

1、Consul 作为注册中心

1.1、引入依赖

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
复制代码

1.2、配置(application.yml)

复制代码
spring:
  cloud:
    consul:
      host: 10.40.96.20
      port: 8500
      discovery:
        register: true
        prefer-ip-address: true
        health-check-critical-timeout: 10s #监控检查失败多长时间后,删除注册的服务
复制代码

如果需要调用的服务在另外一个数据中心,则需要增加 spring.cloud.consul.datacenters 配置;如在本服务在数据中心 dc2,需调用的一个服务(scdemo-server)在另一个数据中心 dc1,则配置如下:

复制代码
spring:
  cloud:
    consul:
      host: 10.40.96.131
      port: 8500
      discovery:
        register: true
        prefer-ip-address: true
        datacenters:
          scdemo-server: dc1
        health-check-critical-timeout: 10s #监控检查失败多长时间后,删除注册的服务
复制代码

注:在使用新版本(SpringBoot 2.4.12/2.4.13/2.5.6/2.5.7/2.5.8、SpringCloud 2020.0.4)时,spring.cloud.consul.datacenters 配置没有效果,还是报找不到服务,应该是新版本还有 bug。

 

配置完成后,正常启动服务即可。

1.3、删除无效的服务

如果在注册服务是未设置 spring.cloud.consul.discovery.health-check-critical-timeout 参数,可以通过命令行或 API 来删除无效的服务。

命令行:

./consul services deregister -id=scdemo-client-9002

API:

curl -X PUT http://10.40.96.10:8500/v1/agent/service/deregister/scdemo-client-9002

2、Consul 作为配置中心

2.1、引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>

2.2、配置(bootstrap.yml)

复制代码
spring:
  cloud:
    consul:
      host: 10.40.96.10
      port: 8500
      config:
        format: yaml 
        prefix: config #配置所在目录

        data-key: data #配置的 key
复制代码

2.3、在 Consul 控制台配置 Key

key 为:config/scdemo-server/data  (scdemo-server 为对应的服务名)

value 为:

test:
  k1: v1
  k2: v22

如下图:

2.4、获取配置信息

复制代码
@Autowired
private Environment environment;

@Scheduled(cron = "0/10 * * * * *")
public void test() {
    logger.info("test.k1={}", environment.getProperty("test.k1"));
    logger.info("test.k2={}", environment.getProperty("test.k2"));
}
复制代码

 

 
出处:https://www.cnblogs.com/wuyongyin/p/15739339.html


相关教程