Feign调用传输文件异常的解决


Posted in Java/Android onJune 24, 2021

1. Current request is not a multipart request

feign接口参数使用 @RequestPart 而非 @RequestParam, 同时需要指定consumes,比如这样:

@PostMapping(value = "/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    Result<FileStorage> upload(@RequestPart(value = "file") MultipartFile file);

2. Feign failed and no fallback

这是hystrix导致,关闭feign熔断,或者延长熔断的超时时间,我简单粗暴的直接关了

3.Read timed out executing POST for “xxx”

配置了hystrix还不行,或者延长ribbon的超时时间,参考了Feign超时问题的办法,简单来说就是feign经过了ribbonn和hystrix两级调用,而且都有一个默认的超时时间,延长超时时间就好了

spring:
  servlet:
    context-path: /farm
  application:
    name: farm
  profiles:
    active: dev
  main:
    allow-bean-definition-overriding: true
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka
  instance:
    prefer-ip-address: true
#关闭feign熔断
feign:
  hystrix:
    enabled: false
#开启熔断,关闭熔断超时或延长调用超时时间
#hystrix:
#  command:
#    default:
#      execution:
#        timeout:
#          enabled: false
#        isolation:
#          thread:
#            timeoutInMilliseconds: 30000
#延长ribbon超时时间
ribbon:
  ReadTimeout: 30000
  ConnectTimeout: 30000

通过Feign上传文件(踩坑)

引入依赖:

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

服务提供者:

@RestController
@RequestMapping("/file")
public interface FileUploadService {
 
    @RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE)
    CommonResult<String> uploadFile(@RequestPart("file") MultipartFile file,
                                    @RequestParam(value = "containerName", required = false) String containerName
}

具体实现不是重点……根据你的实际情况去完成……

服务调用者:

@RestController
@FeignClient(value = "XXXXXXXX", configuration = FileUploadServiceFeign.ClientConfiguration.class)
@RequestMapping("/file")
public interface FileUploadServiceFeign extends FileUploadService {
     
    /**
     * 配置类
     */
    class ClientConfiguration {
        /**
         * 此处注入的是: ObjectFactory<HttpMessageConverters>
         */
        @Autowired
        private ObjectFactory<HttpMessageConverters> messageConverters;
 
        @Bean
        public Encoder feignEncoder() {
            return new SpringFormEncoder(new SpringEncoder(messageConverters));
        }
    }
}

这样就行了……

需要注意的是:

在服务调用者那层的MultipartFile的value要跟服务提供者的@RequestPart中的value值一样。不然它会抛出400异常!!!

Feign调用传输文件异常的解决

成功案例:

Feign调用传输文件异常的解决

Feign调用传输文件异常的解决

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
解决Maven项目中 Invalid bound statement 无效的绑定问题
Jun 15 Java/Android
SpringBoot生成License的实现示例
Jun 16 Java/Android
SpringBoot项目中控制台日志的保存配置操作
Jun 18 Java/Android
Java并发编程必备之Future机制
Jun 30 Java/Android
解决Jenkins集成SonarQube遇到的报错问题
Jul 15 Java/Android
java设计模式--三种工厂模式详解
Jul 21 Java/Android
Java十分钟精通进阶适配器模式
Apr 06 Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 Java/Android
Mybatis-plus配置分页插件返回统一结果集
Jun 21 Java/Android
MyBatis XPathParser解析器使用范例详解
Jul 15 Java/Android
Java代码规范与质量检测插件SonarLint的使用
Aug 05 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
jQuery 使用手册(七)
2009/09/23 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
python文本数据相似度的度量
2018/03/12 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python中的字符串内部换行方法
2018/07/19 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
django 环境变量配置过程详解
2019/08/06 Python
python区分不同数据类型的方法
2019/10/14 Python
医院护士的求职信范文
2013/12/26 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
学校安全生产承诺书
2014/05/23 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
安全生产标语大全
2014/10/06 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
礼仪培训心得体会
2016/01/22 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers