java如何确保每个API调用都得到服务(对Rest API调用进行排队)?
我正在Spring Boot中开发一个REST API,我将在1-3秒内提供响应。我的控制器如下所示:
@RestController
public class ApiController {
List<ApiObject> apiDataList;
@RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
public ResponseEntity<List<ApiObject>> getData(){
List<ApiObject> apiDataList=getApiData();
return new ResponseEntity<List<ApiObject>>(apiDataList,HttpStatus.OK);
}
@ResponseBody
public List<ApiObject> getApiData(){
List<ApiObject> apiDataList3=new List<ApiObject> ();
//do the processing
return apiDataList3;
}
}
所以我有300个用户同时加载API。我用JMeter进行了负载测试,结果还行。但仍然有一些失败(并不是所有的API调用都被提供)。那么我该如何克服这个问题呢?如何在到达的API调用上添加任何队列或任何其他方法,以确保每个API调用都有数据响应
# 1 楼答案
你是说你想确保所有请求都返回数据吗?!如果是,您可以使用
@Async
并获取CompletableFuture
。然后在控制器中,您可以使用CompletableFuture来获得响应。如果出现一些故障,您可以为此设置超时,并捕获异常以记录错误希望这有帮助