最新の安定バージョンについては、Spring Cloud Zookeeper 4.3.0 を使用してください!

クイックスタート

このクイックスタートでは、Spring Cloud Zookeeper を使用してサービス検出と分散構成を説明します。

まず、マシン上で Zookeeper を実行します。その後、それにアクセスし、Spring Cloud Zookeeper でサービスレジストリおよび構成ソースとして使用できます。

ディスカバリクライアントの使用箇所

これらの機能をアプリケーションで使用するには、spring-cloud-zookeeper-core および spring-cloud-zookeeper-discovery に依存する Spring Boot アプリケーションとしてアプリケーションを構築できます。依存関係を追加する最も便利な方法は、Spring Boot スターター org.springframework.cloud:spring-cloud-starter-zookeeper-discovery を使用することです。依存関係管理と spring-boot-starter-parent を使用することをお勧めします。次の例は、一般的な Maven 構成を示しています。

pom.xml
<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-zookeeper-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 セットアップを示しています。

build.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-zookeeper-discovery'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
使用しているバージョンによっては、プロジェクトで使用する Apache Zookeeper のバージョンを調整する必要がある場合があります。詳細については、Zookeeper セクションのインストールを参照してください。

これで、次の HTTP サーバーなどの標準 Spring Boot アプリケーションを作成できます。

@SpringBootApplication
@RestController
public class Application {

    @GetMapping("/")
    public String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

この HTTP サーバーが実行されると、デフォルトのローカルポート (2181) で実行される Zookeeper に接続します。起動動作を変更するには、次の例に示すように、application.properties を使用して Zookeeper の場所を変更します。

spring:
  cloud:
    zookeeper:
      connect-string: localhost:2181

次の例に示すように、DiscoveryClient@LoadBalanced RestTemplate、または @LoadBalanced WebClient.Builder を使用して Zookeeper からサービスとインスタンスのデータを取得できるようになりました。

@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;
}

分散構成の使用箇所

これらの機能をアプリケーションで使用するには、spring-cloud-zookeeper-core および spring-cloud-zookeeper-config に依存する Spring Boot アプリケーションとしてアプリケーションを構築できます。依存関係を追加する最も便利な方法は、Spring Boot スターター org.springframework.cloud:spring-cloud-starter-zookeeper-config を使用することです。依存関係管理と spring-boot-starter-parent を使用することをお勧めします。次の例は、一般的な Maven 構成を示しています。

pom.xml
<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-zookeeper-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 セットアップを示しています。

build.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-zookeeper-config'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
使用しているバージョンによっては、プロジェクトで使用する Apache Zookeeper のバージョンを調整する必要がある場合があります。詳細については、Zookeeper セクションのインストールを参照してください。

これで、次の HTTP サーバーなどの標準 Spring Boot アプリケーションを作成できます。

@SpringBootApplication
@RestController
public class Application {

    @GetMapping("/")
    public String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

アプリケーションは、Zookeeper から構成データを取得します。

Spring Cloud Zookeeper Config を使用する場合、Zookeeper にバインドするには spring.config.import プロパティを設定する必要があります。詳細については、Spring Boot 設定データのインポートセクションを参照してください。