文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot整合Feign

2023-09-14 18:38

关注

目录

1、Feign-简介

Feign是Neflix开发的声明式、模块化的HTTP客户端,集成了Ribbon、RestTemplate实现了负载均衡的执行Http调用,Feign可以帮助我们更加便捷、优雅的调用HTTP API。
Spring Cloud OpenFeign是对Feign的增强,使其支持Spring MVC 注解,另外还整合了Ribbon和Nacos,从而是的Feign使用更加方便,有了feign我们就不用使用resttemplate远程调用了(调用Controller层)。

2、spring-cloud快速整合OpenFeign

1)在调用服务中添加依赖

<!--添加openfeign依赖,依赖于sprin-cloud--><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

2)配置需要调用的接口

@FeignClient(name = "stock-service", path = "/stock")public interface StockFeignService {    // 声明需要调用的接口方法名    @PostMapping("/reduct")    String add(@RequestParam("name") String name);}

3)启动类加上注解

@EnableFeignClients

4)直接调用

@RestController@RequestMapping("/order")public class OrderController {    @Autowired    private StockFeignService stockFeignService;    @GetMapping("/getOrder")    public String getOrder(){        stockFeignService.add("10");        return "Hello world";    }}

注:使用feign需要在参数前面加上@RequestParam和@PathVariable注解并指定参数,不然获取不到参数。

3、Feign日志

1)feign日志级别:

2):配置feign日志:

package com.swp.config;import feign.Logger;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;// 全局配置: 使用@Configuration会全局配置到所有服务提供方(被调用方)// 局部配置: 如果只针对某个服务,就不要使用@Configuration,在@FeignClient(name = "stock-service", path = "/stock", configuration = FeignClient.class)中加入configuration = FeignClient.class@Configurationpublic class FeignConfig {    @Bean    public Logger.Level feignLogerLevel(){        return Logger.Level.FULL;    }}

yaml配置日志级别

#spring 默认日志级别是info,feign的debug日志不会输出,所以需要配置输出日志级别logging:  level:    com.swp.feign: debug #只输出feign目录下的日志

日志输出:
在这里插入图片描述

4、Feign契约配置

若以前使用的feign原生注解,在不想改变原生注解的情况下,可以使用Feign契约配置

feign:client:config:contract: feign.Contract.Default

5、Feign配置超时时间

全局配置:

@Configurationpublic class FeignConfig(){@Beanpublic Request.Options options(){return new Request.Options(5000,10000);}}

yaml配置

feign:client:config:mall-order: #对应微服务# 连接超时时间。默认2sconnectTimeout: 5000# 请求处理超时时间,默认5sreadTimeout: 10000

6、Feign拦截器

在服务消费者调用服务提供者时触发。
Feign拦截器配置类

import feign.RequestInterceptor;import feign.RequestTemplate;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class CustomFeignInterceptor implements RequestInterceptor {    Logger logger = LoggerFactory.getLogger(this.getClass());    @Override    public void apply(RequestTemplate requestTemplate) {        requestTemplate.header("token", "123");        requestTemplate.query("name", "999");        // requestTemplate.uri("/111"); 拦截所有路径,并修改为/{xx}        logger.info("feign拦截器");    }}

注入配置类

 // 注入自定义feign拦截器    @Bean    public CustomFeignInterceptor customFeignInterceptor(){        return new CustomFeignInterceptor();    }}

7、Feign断路器

#开启hysrrisfeign:  hystrix:    enabled: true

定义SysMgrHystrix ,实现FallbackFactory的create方法来提供服务降级实现类对象的创建,
ServiceSysMgrClient是自己的feign接口

@Componentpublic class SysMgrHystrix implements FallbackFactory<ServiceSysMgrClient> {     @Override    public ServiceSysMgrClient create(Throwable throwable) {        return new ServiceSysMgrClient() {           // 下面是feign接口            @Override            public Result<List<OrgNode>> getOrgChildren(Integer parentOrgId) {                return "被回滚了";            }        };    }}

然后在Feign接口上面加上 fallbackFactory = SysMgrHystrix.class
在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_44183847/article/details/128850109

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯