欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Feign的快速使用

程序员文章站 2022-06-24 19:09:04
SpringBoot和SpringCloud的依赖就不提及了,相信你自己都导入了,注意版本对应关系导包 org.springframework.cloud spring-cloud-starter-openfeign在启动类上,添加注解,开启Feign功能import or...

SpringBoot和SpringCloud的依赖就不提及了,相信你自己都导入了,注意版本对应关系

导包

Feign中本身已经集成了Ribbon依赖和自动配置,所有无需导入Ribbon包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在启动类上,添加注解,开启Feign功能

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient //开启注册中心客户端,Eureka、zookeeper等都可以
@EnableHystrix //开启Hystrix
@EnableFeignClients //开启Feign
public class UserConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserConsumerApplication.class,args);
    }
}

在创建一个包名为:client 创建一个接口

创建一个包名为:client 创建一个接口,里面的方法要和被调用的Controller中的方法完全一样,并在接口上添加 @FeignClient("服务名")

访问路径也要一样
案例:

import com.leyou.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient("user-service")//声明连接的是哪一个服务
public interface UserClient {
    //这里的方法要和调用服务的Controller一样,包括访问地址
    @GetMapping("/user/{id}")
    public User findById(@PathVariable("id") Long id);

}

在Controller层,注入Feign接口即可使用

Feign集成了Ribbon

刚开始就说了,Feign本身已经集成了Ribbon依赖和自动配置,所有直接在配置文件里配置即可

ribbon:
  ReadTimeout: 2000 # 数据通信超时时长
  ConnectTimeout: 500 # 连接超时时长  
  MaxAutoRetries: 0 # 当前服务器的重试次数
  MaxAutoRetriesNextServer: 1 # 重试多少次服务
  OkToRetryOnAllOperations: false # 是否对所有的请求方式都重试 如果是false代表只对get请求重试

如果集成了Hystix设置了Hystix的超时时间的话,看一下Hystix的超时时间,将Hystix的超时时间设置大一些

本文地址:https://blog.csdn.net/weixin_44257023/article/details/109902932