openfeign使用nacos服务注册方式调用的实现

 更新时间:2025年09月17日 16:00:52   作者:小风010766  
文章说明如何将项目注册到Nacos,使OpenFeign调用时通过服务名自动发现服务,无需手动配置URL,需添加Nacos和Sentinel依赖,启动类使用@FeignClient注解并指定fallback,服务名称直接填入value属性即可实现动态调用

需要将项目注册到nacos上,openfeign调用时可以依赖nacos上注册的服务名称,直接进行调用,不再需要像openfeign单独使用时,配置 feignClient的url属性.

消费项目

基于openfeign+sentinel的基础上添加如下pom配置

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

启动类添加

@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class NacosConsumerApplication {

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

对应@FeignClient注解需要填写fallback属性

此时和openfeign单独使用时的唯一区别在于

  • nacos调用
@FeignClient(value = "server-application",fallback = TestServiceImpl.class) 

此时直接value=服务提供者注册到nacos的服务名称即可。

  • openfeign单独使用
@FeignClient(name = "pay",url = "http://10.21.46.61:8880",fallback = TestServiceImpl.class)
@FeignClient(value = "server-application",fallback = TestServiceImpl.class)
public interface TestService {
    @GetMapping("/server/getServer")
     String getPayMent(@RequestParam("s") String s);
}

fallback = TestServiceImpl.class

  • 如下:
@Service
public class TestServiceImpl  implements TestService {
    @Override
    public String getPayMent(String s) {
        return "报错了!!!!!!";
    }
}

对应bootstrap.yml配置

  • 如下:
server:
  port: 8890

spring:
  profiles:
    #环境
    active: dev
  application:
    name: consumer-application
  cloud:
    nacos:
      discovery:
        server-addr: 10.xx.xx.xxx:8848
    sentinel:
      transport:
        #配置sentinel dashboard的地址
        dashboard: localhost:8080

feign:
  sentinel:
    enabled: true
  client:
    config:
      default:
        loggerLevel: FULL
        connectTimeout: 5000
        readTimeout: 10000
  • server端没有启动
  • server端 启动

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java中Calendar.add()方法的使用

    java中Calendar.add()方法的使用

    本文主要介绍了java中Calendar.add()方法的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java 数组复制clone方法实现详解

    Java 数组复制clone方法实现详解

    这篇文章主要介绍了Java 数组复制clone方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 详解Java中Optional类的使用方法

    详解Java中Optional类的使用方法

    Optional的作用是什么?他都有哪些方法?阿里规范点名说尽量用Optional来避免空指针,那么什么场景用Optional?本篇文章围绕这三点来进行讲解,感兴趣的可以学习一下
    2022-05-05
  • java泛型基本知识和通用方法

    java泛型基本知识和通用方法

    这篇文章主要介绍了java泛型基础知识及通用方法,从以下几个方面介绍一下java的泛型: 基础, 泛型关键字, 泛型方法, 泛型类和接口,感兴趣的可以了解一下
    2021-06-06
  • JVM的垃圾回收机制真是通俗易懂

    JVM的垃圾回收机制真是通俗易懂

    这篇文章主要为大家详细介绍了JVM的垃圾回收机制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • springboot实现分页功能的完整代码

    springboot实现分页功能的完整代码

    Spring Boot是一个快速开发框架,它提供了很多便捷的功能,其中包括分页查询,下面这篇文章主要给大家介绍了关于springboot实现分页功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 2020年编程选Java的8大理由,JAVA前景如何

    2020年编程选Java的8大理由,JAVA前景如何

    这篇文章主要介绍了2020年编程选Java的8大理由,JAVA前景如何,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java中CaffeineCache自定义缓存时间的实现

    Java中CaffeineCache自定义缓存时间的实现

    本文主要介绍了Java中CaffeineCache自定义缓存时间的实现,通过声明缓存value值holder对象并创建缓存容器,可以为不同的key值指定不同的过期时间,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • Java实现的不同图片居中剪裁生成同一尺寸缩略图功能示例

    Java实现的不同图片居中剪裁生成同一尺寸缩略图功能示例

    这篇文章主要介绍了Java实现的不同图片居中剪裁生成同一尺寸缩略图功能,涉及java针对图片的读取、属性修改等相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • SpringBoot配置文件的优先级顺序、加载顺序、bootstrap.yml与application.yml区别及说明

    SpringBoot配置文件的优先级顺序、加载顺序、bootstrap.yml与application.yml区别及说明

    在SpringBoot中,配置文件的优先级顺序是:application-{profile}.yml或.properties > application.yml或.properties > bootstrap.yml或.properties,{profile}代表不同环境,如dev、test、prod,加载顺序是先加载bootstrap文件
    2024-09-09

最新评论