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

复制代码
依赖:
java 复制代码
<!-- 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配置

java 复制代码
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

java 复制代码
//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类

java 复制代码
/**
 * 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方法

java 复制代码
    @Autowired
    private ChannelManagementClient channelManagementClient;
java 复制代码
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;
    }
}
相关推荐
爱学测试的李木子7 分钟前
性能】JDK和Jmeter的安装与配置
java·开发语言·软件测试·测试工具·jmeter
softshow102610 分钟前
Solon 集成 activemq-client
java·activemq·java-activemq
组合缺一13 分钟前
solon 集成 activemq-client (sdk)
java·solon·activemq
u01090535928 分钟前
白嫖内网穿透之神卓互联Linux安装教程(树莓派)
linux·运维·服务器
Q_192849990636 分钟前
基于Spring Boot的店铺租赁平台的设计与实现
java·spring boot·后端
第八学期41 分钟前
Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面)
java·运维·开发语言·tomcat
迷迭所归处41 分钟前
Linux系统 —— 进程控制系列 - 进程的创建与终止 :fork与exit
linux·运维·服务器
南宫生44 分钟前
力扣-图论-19【算法学习day.69】
java·学习·算法·leetcode·图论
假女吖☌44 分钟前
SpringDataJpa-字段加解密存储
java·数据库
anniewwy1 小时前
在Windows本地用网页查看编辑服务器上的 jupyter notebook
服务器·windows·jupyter