异步REST客户端

时间:2014-01-10 02:22:09

标签: java spring rest asynchronous resttemplate

如何编写异步 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如何继续执行其他任务?

3 个答案:

答案 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/