个人随笔
目录
三、springCloudAlibaba-feign的简单使用
2023-10-25 22:12:36

在上一篇笔记中,我们搭建了nacos的环境,然后默认负载均衡就是Ribbon的轮询策略,这里大概介绍feign,暂时就不去深究原理啦,只要会用就可以了,环境搭建参考:一、springCloudAlibaba-nacos环境搭建

1、feign介绍

feign可以让我们像调用方法一样去调用服务,正常我们都使用openfeign,openfeign兼容ribbon和nacos

2、简单使用

这个是在之前的环境上搭建的,之前我们请求用的是RestTemplate,这里用feign来调用下
pom.xml引用

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-openfeign</artifactId>
  4. </dependency>

新建一个service

  1. package com.suibibk.springCloud.order.openfeign;
  2. import org.springframework.cloud.openfeign.FeignClient;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. @FeignClient(name="stock-service",path="/stock")
  5. public interface StockService {
  6. @RequestMapping("/reduce")
  7. public String reduce();
  8. }

启动类加上注解

  1. @EnableFeignClients
  2. public class OrderApplication {
  3. ...
  4. }

跟service一样调用调用

  1. package com.suibibk.springCloud.order.controller;
  2. import com.suibibk.springCloud.order.openfeign.StockService;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.ResponseBody;
  6. import org.springframework.web.bind.annotation.RestController;
  7. @RestController
  8. @RequestMapping("/order")
  9. public class OrderController {
  10. @Autowired
  11. StockService stockService;
  12. @RequestMapping("/add")
  13. public String add(){
  14. String msg = stockService.reduce();
  15. return "新增订单成功"+msg;
  16. }
  17. }

3、日志级别的修改

feign有4种日志等级

  • NONE:性能最佳,适用于生成,不记录任何日志(默认值)
  • BASIC:适用于生产环境问题追踪,仅记录请求方法、URL、响应状态码以及执行时间
  • HEADERS:在BASIC的基础上,记录请求和响应的header
  • FULL:比较适用于开发以及测试环境定位问题,记录请求和响应的header、body和元数据

我们这里开启下,只需要配置文件加上

  1. #springboot默认日志级别是info,feign的debug日志级别就不会输出
  2. logging:
  3. level:
  4. com.suibibk.springCloud.order.openfeign: debug
  5. #openfeign日志局部配置
  6. feign:
  7. client:
  8. config:
  9. #服务名
  10. stock-service:
  11. loggerLevel: FULL

记得这里springboot的一定要改为debug,我们指定com.suibibk.springCloud.order.openfeign包下面的是debug

再请求就看得到日志了

4、超时时间

很简单,配置加上connectTimeout和readTimeout即可

  1. feign:
  2. client:
  3. config:
  4. #服务名
  5. stock-service:
  6. loggerLevel: FULL
  7. #链接超时时间,默认2秒
  8. connectTimeout: 5000
  9. #请求处理超时时间,默认5秒
  10. readTimeout: 10000

5、自定义拦截器

这里指的是feign的拦截器,有时候我们想要再请求发出去的时候可以修改相关信息,比如在报文头加上token。
首先我们新建一个拦截器类

  1. package com.suibibk.springCloud.order.feignInterceptor;
  2. import feign.RequestInterceptor;
  3. import feign.RequestTemplate;
  4. import org.slf4j.LoggerFactory;
  5. public class CustomFeignInterceptor implements RequestInterceptor {
  6. @Override
  7. public void apply(RequestTemplate requestTemplate) {
  8. //设置报文头
  9. requestTemplate.header("token","123");
  10. }
  11. }

然后配置加上requestInterceptors即可

  1. feign:
  2. client:
  3. config:
  4. #服务名
  5. stock-service:
  6. loggerLevel: FULL
  7. #链接超时时间,默认2秒
  8. connectTimeout: 5000
  9. #请求处理超时时间,默认5秒
  10. readTimeout: 10000
  11. requestInterceptors:
  12. - com.suibibk.springCloud.order.feignInterceptor.CustomFeignInterceptor

访问请求可以看到token加上了

 71

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2