ナコス3:サービス登録と二つの消費

サービス登録の例

 チャート:

 

  1. プロバイダアプリケーションがナコスで自分の情報を登録します
  2. コンシューマアプリケーションは、アプリケーションのナコスプロバイダから情報を取得します
  3. 外部プロバイダが提供する消費者の直接呼び出しインタフェース

プロジェクト構造: 

             画像 

主なプロジェクトは、3つのファイルで構成されています。 

  • pom.xml
  • NacosProviderApplication.java
  • application.properties

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacos-spring-cloud-discovery-example</artifactId>
        <groupId>com.alibaba.nacos</groupId>
        <version>0.2.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-spring-cloud-provider-example</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
</project>

NacosProviderApplication.java 

package com.alibaba.nacos.example.spring.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

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

   @RestController
   class EchoController {
      @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
      public String echo(@PathVariable String string) {
         return "Hello Nacos Discovery " + string;
      }
   }
}

application.properties 

// 监听端口
server.port=1919
// 服务名为“service-provider”
spring.application.name=service-provider
// 注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

試験方法1:
プロジェクトが開始した場合の後、次のコンソール出力は、その後、登録が成功しています 

2019-05-21 10:27:03.571  INFO 7888 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, service-provider 192.168.43.248:18080 register finished

テスト方法:
ログインナコスクエリ登録サービス 

画像 

どちらのサービス消費

RestTemplet

使用RestTempletは簡単RESTリソース使用することができます
以下のコードをRestTempletの消費者サービスである:
のpom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacos-spring-cloud-discovery-example</artifactId>
        <groupId>com.alibaba.nacos</groupId>
        <version>0.2.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-spring-cloud-consumer-example</artifactId>

    <properties>
        <spring-cloud-openfeign.version>2.0.0.RELEASE</spring-cloud-openfeign.version>
        <spring-cloud-netflix.version>2.0.0.RELEASE</spring-cloud-netflix.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-ribbon</artifactId>
            <version>${spring-cloud-netflix.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>${spring-cloud-openfeign.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
</project>

NacosConsumerApplication.java 

package com.alibaba.nacos.example.spring.cloud;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;


@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

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

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    }
}

application.properties 

// 监听端口
server.port=1929
// 服务名
spring.application.name=service-consumer
// 注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

見せ掛けます

  比較restTrmplet、ふり使用@FeignClient注釈は、サービスを結合するスプリングMVCアノテーションによってRESTインターフェイス側を提供することができるインターフェイスで定義されたインタフェース機能を指定します。必要なときに消費者サービスは、単に対応するメソッドを直接呼び出します。
以下は、コード装うの消費者サービスで
のpom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacos-spring-cloud-discovery-example</artifactId>
        <groupId>com.alibaba.nacos</groupId>
        <version>0.2.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos-spring-cloud-consumer-example</artifactId>

    <properties>
        <spring-cloud-openfeign.version>2.0.0.RELEASE</spring-cloud-openfeign.version>
        <spring-cloud-netflix.version>2.0.0.RELEASE</spring-cloud-netflix.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-ribbon</artifactId>
            <version>${spring-cloud-netflix.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>${spring-cloud-openfeign.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
</project>

NacosConsumerApplication.java 

package com.alibaba.nacos.example.spring.cloud;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {

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

    @RestController
    public class TestController {

        @Autowired
        Client client;

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return client.hello(str);
        }
    }

    @FeignClient("service-provider")
    interface Client{
        @GetMapping(value="/echo/{str}")
        String hello(@PathVariable("str") String str);
    }
}

application.properties 

// 监听端口
server.port=1929
// 服务名
spring.application.name=service-consumer
// 注册中心地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

テスト

テスト住所:HTTP:// localhostを:1929 /エコー/ DAA
期待収益結果:こんにちはナコスディスカバリーDAA(消費者の成功)

 

公開された136元の記事 ウォンの賞賛6 ビュー1502

おすすめ

転載: blog.csdn.net/weixin_42073629/article/details/104624483