春の雲(2)の構成ユーレカクライアント

上記のレビュー:

春の雲(a)のユーレカサーバー - モノマーおよびクラスタのセットアップ

このセクションでは、ユーレカサーバー、サービスプロバイダとして1、呼び出し元とサービスのセクションに登録された2つのユーレカクライアントを作成します。

A.サービスプロバイダ(プロデューサー)

1.pomに依存して追加します。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/>
    </parent>
​
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>
​
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.1.0.RELEASE</version>
        </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>

2.Application起動クラスの注釈

  • @EuableDiscoveryClient:自動検出クライアントの実装であります

@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class, args);
    }
}

3.プロファイル

spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

4.サービスを提供

@RestController
public class HelloController {
​
    @RequestMapping("/hello")
    public String index(@RequestParam String name) {
        return "hello " + name + ",welcome to Spring Cloud";
    }
}

サービスへII。発信者(消費者)

1.pomに依存して追加します。

   
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yfy</groupId>
    <artifactId>consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>consumer</name>
    <description>Demo project for Spring Boot</description>
​
    <properties>
        <java.version>1.8</java.version>
    </properties>
​
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.Application起動クラスの注釈

  • @EnableDiscoveryClient :サービスの登録と発見を有効にします

  • @EnableFeignClients:装うリモート呼び出しを有効にします

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

3.プロファイル

spring.application.name=spring-cloud-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
feign.hystrix.enabled=true

4.Feignコールの実装

@FeignClient(name= "spring-cloud-producer",fallback = HelloRemoteHystrix.class)
public interface HelloRemote {
​
    @RequestMapping(value = "/hello")
    String hello(@RequestParam(value = "name") String name);
}

5.web層は、リモートサービスを呼び出します

@RestController
public class HelloController {

    @Autowired
    HelloRemote helloremote;

    @RequestMapping("/hello/{name}")
    public String index(@PathVariable("name") String name) {
        return helloremote.hello(name);
    }
}

III。実験

ターンスプリング・クラウドユーレカ、春・クラウド・プロデューサー、春・クラウド・消費者の3つのプロジェクトを開始します

ブラウザ、タイプ:http://localhost:9001/hello/yfy

戻り値:hello yfy,welcome to Spring Cloud

4.ロード・バランシング・テスト

制御方法は、プロデューサを変更します

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String index(@RequestParam String name) {
        return "hello " + name + ",welcome to Spring Cloud:product2";
    }
}

その後プロデューサー、ポート9003を起動します

 

ブラウザ、タイプ:http://localhost:9001/hello/yfy

まず戻り値:hello yfy,welcome to Spring Cloud

最初のリターン: `YFYこんにちは、春クラウドへようこそ:product2

2つのサービスセンターに自動的に負荷分散サービスの機能を提供している、二つの結果が交互に現れる探しに行くために試験を実施し続けています。

おすすめ

転載: blog.csdn.net/fy_java1995/article/details/94155943