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 相关文章推荐
详解Java实践之适配器模式
Jun 18 Java/Android
Java Optional<Foo>转换成List<Bar>的实例方法
Jun 20 Java/Android
mybatis 获取无数据的字段不显示的问题
Jul 15 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
Java完整实现记事本代码
Jun 16 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
maven 解包依赖项中的文件的解决方法
Jul 15 Java/Android
springcloud之Feign超时问题的解决
Feign调用全局异常处理解决方案
总结一下关于在Java8中使用stream流踩过的一些坑
IDEA使用SpringAssistant插件创建SpringCloud项目
使用feign服务调用添加Header参数
详解Java实现数据结构之并查集
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 #Java/Android
You might like
php mysql数据库操作类
2008/06/04 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php eval函数一句话木马代码
2015/05/21 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
对联广告js flash激活
2006/10/19 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python制作数据导入导出工具
2015/07/31 Python
Python实现简单登录验证
2016/04/13 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
django 将model转换为字典的方法示例
2018/10/16 Python
Python File(文件) 方法整理
2019/02/18 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
python tkinter canvas使用实例
2019/11/04 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
python开发一款翻译工具
2020/10/10 Python
java关于string最常出现的面试题整理
2021/01/18 Python
C语言笔试题
2014/09/04 面试题
十佳家长事迹材料
2014/08/26 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
高三生物教学反思
2016/02/22 职场文书
古诗之感恩老师
2019/10/24 职场文书