使用微服务的时候往往服务之间调用比较麻烦,spring cloud提供了Feign接口调用,RestTemplate调用的方式
这里我探讨下RestTemplate调用的方式:
服务A:接收三个对象参数 这三个参数的是通过数据库查询出来的
服务B:要调用服务A 服务B提供了查询三个参数的方法,后面要使用三个参数
对于服务A,处理的方式有两中
1. 服务B提供一个Feign接口将查询三个参数的方法公开,服务A直接引用Feign来查询参数,服务B只需要将三个查询关键字传递过去即可
服务A action
@PostMapping("/import/{busiCode}/{filePath}")
public Map importExcel(@PathVariable("filePath") String filePath,@PathVariable("busiCode") String busiCode,@RequestBody Map params,
HttpServletRequest request,HttpServletResponse response) {
response.setCharacterEncoding("UTF-8");
UserInfo user = UserUtil.getUser();
return excelService.importExcel(filePath,busiCode,params,user);
}
服务A service
//引入Feign接口
private ExcelFreign excelFreign;
public Map importExcel(String filePath, String busiCode,Map params,UserInfo user ) {
Map result=new HashMap();
excelFreign = SpringTool.getApplicationContext().getBean(ExcelFreign.class);
CmdImportConfigDto configDto = excelFreign.getCmdImportConfigByBusiCode(busiCode);
CmdImportDto importDto=new CmdImportDto();
importDto.setImportConfigId(configDto.getId());
importDto.setExcelPath(filePath);
importDto.setParam(new GsonBuilder().create().toJson(params));
importDto.setLog("");
Long impId=null;
try {
impId= Long.valueOf(excelFreign.saveCmdImportDto(importDto));
} catch (Exception e1) {
e1.printStackTrace();
result.put("error", "保存出现异常");
result.put("message", e1.getMessage());
return result;
}
try{
excelFreign.updateImportStatus(impId, ImportConstant.ImportStatus.SUBMIT, "提交成功");
}catch(Exception e){
e.printStackTrace();
}
ValidateTask validateTask=new ValidateTask();
validateTask.init(impId,filePath, busiCode, params,user);
String message;
try {
message = validateTask.call();
} catch (Exception e) {
e.printStackTrace();
result.put("error", "验证出现异常");
result.put("message", e.getMessage());
return result;
}
if(message!=null){
result.put("error", "验证不通过");
resu