如何编写异步 REST客户端?
我的控制器(不确定它是否足以成为 async ):
@RequestMapping(method = RequestMethod.GET, value = "/get/all")
@ResponseBody
public Callable < CustomersListDTO > getAllCustomers() {
return new Callable < CustomersListDTO > () {
@Override
public CustomersListDTO call() throws Exception {
Thread.sleep(2000);
return customerService.getAllCustomers();
}
};
}
我的同步REST 客户端方法:
public Response get_all_customers() {
ResponseEntity < CustomersListDTO > response;
try {
response = restTemplate.getForEntity(
getMethodURI(ServiceExplanation.GET_ALL_CUSTOMERS),
CustomersListDTO.class
);
message = "Customers obtained successfully!";
} catch (HttpServerErrorException ex) {
message = "ERROR: " + ex.getMessage() + " - " + ex.getResponseBodyAsString();
} catch (HttpClientErrorException ex) {
message = "ERROR: " + ex.getMessage() + " - " + ex.getResponseBodyAsString();
} catch (RestClientException ex) {
message = checkIfServerOrInternetDown();
}
return formResponse(message, response);
}
如何使其异步?当SERVER获取数据并稍后返回找到的数据时,CLIENT如何继续执行其他任务?
答案 0 :(得分:6)
如果您正在寻找REST异步客户端实现,您可以查看Jersey的asynchronous client API。它可以很容易地与Spring集成。
答案 1 :(得分:0)
我建议在你的应用程序中添加对groovy的支持,这样你就可以使用AsyncHTTPBuilder了。它基本上使用了CoverT下的FutureTask。
答案 2 :(得分:0)
检查宁&#39;异步http客户端:https://github.com/AsyncHttpClient/async-http-client
也是eBay&#39;用于并行休息异步客户端的REST命令器可以使用:http://www.restcommander.com/