1. 快速入门
本快速入门将介绍如何使用 Spring Cloud Consul 进行服务发现和分布式配置。
首先,在您的机器上运行 Consul Agent。然后,您可以访问它并将其用作 Spring Cloud Consul 的服务注册表和配置源。
1.1. 发现客户端用法
要在应用程序中使用这些功能,您可以将其构建为 Spring Boot 应用程序,该应用程序依赖于spring-cloud-consul-core.
添加依赖关系的最便捷方法是使用 Spring Boot Starters:org.springframework.cloud:spring-cloud-starter-consul-discovery.
我们建议使用依赖项管理和spring-boot-starter-parent.
以下示例显示了典型的 Maven 配置:
<project>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>{spring-boot-version}</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>
以下示例显示了典型的 Gradle 设置:
plugins {
  id 'org.springframework.boot' version ${spring-boot-version}
  id 'io.spring.dependency-management' version ${spring-dependency-management-version}
  id 'java'
}
repositories {
  mavenCentral()
}
dependencies {
  implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
现在您可以创建一个标准的 Spring Boot 应用程序,例如以下 HTTP 服务器:
@SpringBootApplication
@RestController
public class Application {
    @GetMapping("/")
    public String home() {
        return "Hello World!";
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
当此 HTTP 服务器运行时,它连接到在默认本地 8500 端口上运行的 Consul 代理。
要修改启动行为,您可以使用application.properties,如以下示例所示:
spring:
  cloud:
    consul:
      host: localhost
      port: 8500
您现在可以使用DiscoveryClient,@LoadBalanced RestTemplate或@LoadBalanced WebClient.Builder从 Consul 检索服务和实例数据,如以下示例所示:
@Autowired
private DiscoveryClient discoveryClient;
public String serviceUrl() {
    List<ServiceInstance> list = discoveryClient.getInstances("STORES");
    if (list != null && list.size() > 0 ) {
        return list.get(0).getUri().toString();
    }
    return null;
}
1.2. 分布式配置用法
要在应用程序中使用这些功能,您可以将其构建为 Spring Boot 应用程序,该应用程序依赖于spring-cloud-consul-core和spring-cloud-consul-config.
添加依赖关系的最便捷方法是使用 Spring Boot Starters:org.springframework.cloud:spring-cloud-starter-consul-config.
我们建议使用依赖项管理和spring-boot-starter-parent.
以下示例显示了典型的 Maven 配置:
<project>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>{spring-boot-version}</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-consul-config</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>
以下示例显示了典型的 Gradle 设置:
plugins {
  id 'org.springframework.boot' version ${spring-boot-version}
  id 'io.spring.dependency-management' version ${spring-dependency-management-version}
  id 'java'
}
repositories {
  mavenCentral()
}
dependencies {
  implementation 'org.springframework.cloud:spring-cloud-starter-consul-config'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
现在您可以创建一个标准的 Spring Boot 应用程序,例如以下 HTTP 服务器:
@SpringBootApplication
@RestController
public class Application {
    @GetMapping("/")
    public String home() {
        return "Hello World!";
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
应用程序从 Consul 检索配置数据。
如果您使用 Spring Cloud Consul Config,则需要将spring.config.import属性以绑定到 Consul。
您可以在 Spring Boot 配置数据导入部分阅读更多相关信息。 |