Feign的使用

Feign的使用基于Feign远程调用Feign说明Feign是一个声明式的http客户端,其作用是帮助我们优雅的实现http请求的发送官网地址:https://github.com/OpenFeign/feignFeign的使用修改服务的pom.xml文件添加Feign依赖<!feign客户端依赖><dependency><groupId>org.springframework.cloud</groupId><artifa

大家好,欢迎来到IT知识分享网。

基于Feign远程调用

Feign说明

Feign是一个声明式的http客户端,其作用是帮助我们优雅的实现http请求的发送

官网地址:https://github.com/OpenFeign/feign

Feign的使用

  1. 修改服务的pom.xml文件添加Feign依赖
<!--feign客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  1. 找到该服务的启动类添加注解开启Feign的功能
@EnableFeignClients/*开启Feign的功能*/
  1. 新建Feign客户端包clients,在这个包新建一个接口UserClient用来进行远程调用
@FeignClient("userservice")/*指定服务的名称*/
public interface UserClient { 
   
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);/*从路径获得的参数需要加上@PathVariable注解*/
}
  1. 在service中调用远程服务(RestTemplate和Feign只能使用其中一个)
@Autowired
private OrderMapper orderMapper;

@Autowired
private UserClient userClient;

public Order queryOrderById(Long orderId) { 
   
    // 1.查询订单
    Order order = orderMapper.findById(orderId);
    // 2.使用Feign远程调用
    User user = userClient.findById(order.getUserId());
    // 3.封装user到order
    order.setUser(user);
    // 4.返回
    return order;
}
  1. 修改本服务的名称为原服务名称-abc
orderservice-abc

自定义Feign配置

  1. 配置Feign日志–配置文件方式

在application.yml文中添加以下内容:

feign:
  client:
    config:
      default:  #这里用default就是全局配置,如果写某个服务名称,则针对某个微服务生效
        loggerLevel: FULL
  1. 配置Feign日志–java代码的方式
  • 首先创建一个Feign配置类FeignClientConfiguration,编写方法
public class FeignClientConfiguration { 
   
    @Bean
    public Logger.Level logLevel(){ 
   
        return Logger.Level.BASIC; //设置全局日志等级,调试错误时可以使用FULL,平时不建议使用,因为会消耗性能,BASIC和NONE建议使用
    }
}
  • 是配置类全局生效:在启动类上修改注解@EnableFeignClients指定默认的Feign配置为我们创建的Feign配置
@EnableFeignClients(defaultConfiguration = FeignClientConfiguration.class)

Feign的性能优化

  1. 在pom.xml中引入依赖
<!--httpClient的依赖-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
  1. 在application.yml配置文件中添加以下内容
feign:
  httpclient:
    enabled: true #开启feign对HttpClient的支持
    max-connections: 200 #最大连接数
    max-connections-per-route: 50 #每个路径的最大连接数

Feign最佳实践

1.创建一个module,命名为feign-api,然后引入feign的starter依赖

<!--feign客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.将order-service中编写的UserClient、User、FeignConfiguration都复制到feign-api项目中

3.在order-service中引入feign-api的依赖

<!--引入feign的统一API(自己创建的模块)-->
<dependency>
    <groupId>cn.itcast.demo</groupId>
    <artifactId>feign-api</artifactId>
    <version>1.0</version>
</dependency>

4.修改order-service中的所有上述三个组件有关的import部分,改成导入feign-api中的包

5.当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用。有两种解决方法

方法一在启动类添加注解指定FeignClient所在包:

@EnableFeignClients(basePackages = "cn.itcast.feign.clients")/*开启Feign的功能*/

方法一在启动类添加注解指定FeignClient字节码:

@EnableFeignClients(clients = { 
   UserClient.class})/*开启Feign的功能*/

6.重启测试

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23796.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信