Nacos服务调用(基于Openfeign)

>这篇文章里,我搭建了一个nacos服务中心,并且注册了一个服务,下面我们来看在上一篇文章的基础上,怎样用Openfeign来调用这个服务。

0.同上篇,启动nacos

 

1.搭建alibaba spring cloud脚手架

访问https://start.aliyun.com/bootstrap.html,GroupID: com.alibaba.cloud,Artifact:nocos-discovery-consumer-sample。,选择依赖:Nacos Service Discovery,Spring Web,Cloud Bootstrap. 

 

2.在pom文件中引入spring-cloud-starter-loadbalancer,注意一定要引入loadbalancer,否则用openfeign调用会报错。

完整的pom文件如下:

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    modelVersion>4.0.0modelVersion>
    parent>
        groupId>org.springframework.bootgroupId>
        artifactId>spring-boot-starter-parentartifactId>
        version>2.6.11version>
        relativePath/> 
    parent>
    groupId>com.alibaba.cloudgroupId>
    artifactId>nocos-discovery-consumer-sampleartifactId>
    version>0.0.1-SNAPSHOTversion>
    name>nocos-discovery-consumer-samplename>
    description>Demo project for Spring Bootdescription>

    properties>
        java.version>1.8java.version>
        spring-cloud-alibaba.version>2021.0.4.0spring-cloud-alibaba.version>
        spring-cloud.version>2021.0.4spring-cloud.version>
    properties>

    dependencies>
        dependency>
            groupId>org.springframework.bootgroupId>
            artifactId>spring-boot-starter-webartifactId>
        dependency>
        dependency>
            groupId>com.alibaba.cloudgroupId>
            artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
        dependency>
            groupId>org.springframework.cloudgroupId>
            artifactId>spring-cloud-starterartifactId>
        dependency>

        dependency>
            groupId>org.springframework.bootgroupId>
            artifactId>spring-boot-starter-testartifactId>
            scope>testscope>
        dependency>
          dependency>
    groupId>org.springframework.cloudgroupId>
    artifactId>spring-cloud-starter-openfeignartifactId>
dependency>
          dependency>
            groupId>org.springframework.cloudgroupId>
            artifactId>spring-cloud-starter-loadbalancerartifactId>
            version>3.0.1version>
        dependency>

    dependencies>

    dependencyManagement>
        dependencies>
            dependency>
                groupId>org.springframework.cloudgroupId>
                artifactId>spring-cloud-dependenciesartifactId>
                version>${spring-cloud.version}version>
                type>pomtype>
                scope>importscope>
            dependency>
            dependency>
                groupId>com.alibaba.cloudgroupId>
                artifactId>spring-cloud-alibaba-dependenciesartifactId>
                version>${spring-cloud-alibaba.version}version>
                type>pomtype>
                scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    build>
        plugins>
            plugin>
                groupId>org.apache.maven.pluginsgroupId>
                artifactId>maven-compiler-pluginartifactId>
                version>3.8.1version>
                configuration>
                    source>1.8source>
                    target>1.8target>
                    encoding>UTF-8encoding>
                configuration>
            plugin>
            plugin>
                groupId>org.springframework.bootgroupId>
                artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

 3.配置application.properties

spring.application.name=nocos-discovery-consumer-sample
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.namespace=public
spring.main.allow-circular-references=true
server.port=9091

注意这一行:spring.cloud.nacos.discovery.server-addr=localhost:8848 ,表明这是nacos服务中心的地址。

4.新建一个Openfeign调用类:

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;

@FeignClient("nocos-discovery-provider-sample") 
@LoadBalancerClient("nocos-discovery-provider-sample")
public interface EchoService {

    @GetMapping("/echo/{message}")
     public String callEcho(@PathVariable String message);

}

这里要注意的是标注@LoadBalancerClient("nocos-discovery-provider-sample"),nocos-discovery-provider-sample就是上一篇中服务提供方注册到nacos的名称.

 

5.新建一个Controller:

@RestController
public class RestTemplateController {

     @Autowired
     private EchoService echoService;

     @GetMapping("/call/echo/{message}")
     public String callEcho(@PathVariable String message) {

         //openFeign test
         return "From openFeign :"+echoService.callEcho(message);

     }
}

6.SpringBoot启动类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NocosDiscoveryConsumerSampleApplication {

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

}

记得要加标注@EnableFeignClients

 

7.访问http://localhost:9091/call/echo/hello

 

文章来源于互联网:Nacos服务调用(基于Openfeign)

THE END
分享
二维码