如何确保提供每个API调用(Queuing Rest API调用)?

时间:2017-05-17 00:20:10

标签: java rest api spring-boot httpresponse

我正在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调用都被提供)。那么我该如何克服这个?如何imlement任何到达的API调用的队列或任何其他方法,以确保每个API调用响应数据?

1 个答案:

答案 0 :(得分:1)

你的意思是你想确保所有请求都返回数据吗?!如果是,您可以使用@Async并获取CompletableFuture。然后在Controller中,您可以使用CompletableFuture来获取响应。如果出现故障,您可以设置该超时并捕获异常以记录错误。

希望得到这个帮助。