Feign 在文件上传接口传递 MultipartFile对象时,对应服务的文件上传接口接不到请求

 

问题:

  Feign 在文件上传接口传递 MultipartFile对象时,对应服务的文件上传接口接不到请求

原因:

    Feign在转发时,是以普通表单形式发送给对应服务,以ContentType=application/x-www-form-urlencoded的表单发送,而文件上传需form-data的ContentType,故服务端接收不到请求

解决方案:

    在@RequestMapping(xxx, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)  添加produces 和 consumes字段指明数据格式(json)和ContentType即可解决问题

 

 

注:若没有设定Feign的回调时间,且文件上传时间超过1秒,则不管请求是否成功,Feign都会调用回调方法返回错误

原因:

    Feign在调用内部服务时,因为熔断器的默认超时时间是1s,而服务处理超过了1s,接口还没处理完,就直接被熔断处理了。

解决方案:

    application.yml 设置最大超时熔断:  ** 在写这些配置的时候是不会有提示的,但配置还是会生效的

# 熔断器开启 
feign:
  hystrix:
    enabled: true
#hystrix的超时时间
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 9000
#ribbon的超时时间
ribbon:
  ReadTimeout: 3000
  ConnectTimeout: 3000

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值