当前位置: 首页 > article >正文

@FeignClient用于Nacos微服务间的接口调用

依赖:
<!-- spring-boot启动依赖 -->
<!-- 提供者 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- openFeign -->
<!-- 消费者-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

yml配置

feign:
  compression:
    response:
      enabled: true
    request:
      enabled: true
      mime-types: text/xml,application/xml,application/json
      min-request-size: 2048
  circuitbreaker:
    enabled: true
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000
        loggerLevel: basic

提供者创建RESTful接口,controller接口 @RestController @GetMapping("/url")

消费者创建feign目录,创建Interface ManagementClient

//name 填写
//spring:
//application:
//  name: management
//springboot的服务名
//fallback填写实现类,用于接口回调,接口异常时返回保底数据
@FeignClient(name = "management", fallback = ManagementClientFallback.class)
public interface ManagementClient {

    @PostMapping("/url")
    OperaResponse selectList(@RequestBody IdRequest request);
}

/feign/impl,创建ManagementClientFallback类

/**
 * fallback是在远程服务调用失败时,向调用方返回一个备用(回退)响应的机制
 */
@Component
public class ManagementClientFallback implements ManagementClient {
    @Override
    public OperaResponse selectList(IdRequest request) {
        return OperaResponse.error(ErrStatus.FEIGN_ERROR);
    }
}

创建ClientUtil用于调用Client方法,service层依赖注入Client,将Client对象和参数传给ClientUtil方法

    @Autowired
    private ChannelManagementClient channelManagementClient;
public class ClientUtil {
    private ClientUtil(){
    }

    public static List<Response> selectList(ManagementClient client, Integer Id){
        IdRequest request = new IdRequest();
        request.setId(id);
        OperaResponse operaResponse = client.selectList(request);
        if(operaResponse.getData() == null){
            return new ArrayList<>();
        }
        List<Response> list = JSONObject.parseArray(JSONObject.toJSONString(operaResponse.getData()), Response.class);
        return list == null ? new ArrayList<>() : list;
    }
}


http://www.kler.cn/a/445810.html

相关文章:

  • 通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统
  • 腾讯云云开发 Copilot 深度探索与实战分享
  • 单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
  • 胡九道:经典传承(贵宾酒)
  • 可访问性(Accessibility)的重要性及实现:构建包容性的数字世界
  • 作业Day4: 链表函数封装 ; 思维导图
  • 微信小程序的消息头增加的字段不能有下滑线,字段大写字母自动转换消息字母
  • python学习——洛谷P2010 [NOIP2016 普及组] 回文日期 三种方法
  • Linux文件属性 -- 查看文件命令
  • Redis问题篇
  • 《探索 VR:开启沉浸式虚拟世界之旅》
  • Spring Boot 技术详解:核心特性、运行方式与应用实践
  • 【功能安全】硬件架构度量
  • Spring Boot--06--整合Swagger
  • 前端工程中.git文件夹内容分析
  • Flutter组件————AppBar
  • go语言zero框架中config读取不到.env文件问题排查与解决方案
  • 【日常笔记】Spring boot:编写 Content type = ‘text/plain‘ 接口
  • 【读书笔记】《论语别裁》学而有何乐
  • Git使用步骤
  • 【Vulkan入门】16-IndexBuffer
  • CPU性能优化-基于源代码的CPU调优
  • 安装指南|OpenCSG Starship上架GitHub Marketplace
  • Hadoop实验:关于MapReduce词频统计的实验步骤
  • LSTM (Long Short-Term Memory)
  • MQTT客户端向服务端建立ssl连接报错