• 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

     

  • 相关阅读:
    有 5nm 制程工艺的 MCU 吗?
    Windows10 电脑上配置 Docker 环境
    字节开源RPC框架Kitex的日志库klog源码解读
    Windows11系统自动获取电脑IPV6地址,并且开机自动发送到指定邮箱
    Llama2-Chinese项目:6-模型评测
    用go实现http服务端和请求端
    web前端-javascript-运算符的优先级(如果遇到的优先级不清楚的,可以使用()来改变优先级)
    Docker安装Tomcat容器并部署web项目
    软件设计模式系列之十三——享元模式
    Java基础篇:什么是hashCode 以及 hashCode()与equals()的联系
  • 原文地址:https://www.cnblogs.com/wangsanfeng/p/17152147.html