feign 调用问题
一、Read timed out问题
问题描述
feign调用超时,会出现这个问题。
一般来说当我们的业务需要处理的时间很大时,会出现这个问题。例如,上传excel文件。
那这里我们可以进行feign的超时时间设置。这里只针对指定的feign client
解决办法
@FeignClient(name = "systemClient")
public interface SystemClient {
@RequestMapping(path = "/llsydn/importExcel", consumes = {"multipart/form-data"})
JsonResult importExcel(@RequestPart(name="file") MultipartFile file);
}
yml配置
feign:
httpclient:
enabled: true
client:
config:
default:
#默认时间设置为10s
ConnectTimeOut: 10000
ReadTimeOut: 10000
#调用system微服务,默认时间设置为30s
systemClient:
ConnectTimeOut: 30000
ReadTimeOut: 30000
二、400 Bad Request 问题
问题描述
在使用feign调用的使用出现400 Bad request的问题。
代码如
@PostMapping("/llsydn/getMenusByIdsAndTypes")
List<SysMenuDto> getMenusByIdsAndTypes(@RequestParam("menuIds") String menuIds,
@RequestParam("menuType") String menuType);
这个 menuIds 数量比较多,导致400 错误。发现问题出在menuIds 跟在URL后面。
解决办法
将方法修改为:
@PostMapping("/llsydn/getMenusByIdsAndTypes")
List<SysMenuDto> getMenusByIdsAndTypes(@RequestBody MultiValueMap<String,String> queryParam);
调用方法修改成:
public List<SysMenuDto> getMenusByIdsAndNotType(String menuIds, String menuType){
MultiValueMap valueMap=new LinkedMultiValueMap();
valueMap.add("menuIds",menuIds);
valueMap.add("menuType",menuType);
return systemClient.getMenusByIdsAndTypes(valueMap);
}
注意:本文归作者所有,未经作者允许,不得转载