您好,登錄后才能下訂單哦!
這篇文章主要介紹“Feign調用傳輸文件異常的解決方法”,在日常操作中,相信很多人在Feign調用傳輸文件異常的解決方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Feign調用傳輸文件異常的解決方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
feign接口參數使用 @RequestPart 而非 @RequestParam, 同時需要指定consumes,比如這樣:
@PostMapping(value = "/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) Result<FileStorage> upload(@RequestPart(value = "file") MultipartFile file);
這是hystrix導致,關閉feign熔斷,或者延長熔斷的超時時間,我簡單粗暴的直接關了
配置了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
<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調用傳輸文件異常的解決方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。