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 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
解决Jenkins集成SonarQube遇到的报错问题
Jul 15 Java/Android
MyBatis-Plus 批量插入数据的操作方法
Sep 25 Java/Android
关于springboot配置druid数据源不生效问题(踩坑记)
Sep 25 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
Java9新特性之Module模块化编程示例演绎
Mar 16 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
树结构之JavaScript
2017/01/24 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
python实现人民币大写转换
2018/06/20 Python
Django中的ajax请求
2018/10/19 Python
在django模板中实现超链接配置
2019/08/21 Python
python实现简单银行管理系统
2019/10/25 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
如何利用Python 进行边缘检测
2020/10/14 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
高中语文教学反思
2014/01/16 职场文书
学生干部培训方案
2014/06/12 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers