异步REST客户端

use*_*163 7 java rest spring asynchronous resttemplate

如何编写异步休息客户端?我的控制器(不确定它是不是因为异步).

@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();
        }

    };
}
Run Code Online (Sandbox Code Playgroud)

我的同步休息客户端方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

如何使其异步?当SERVER获取数据并稍后返回找到的数据时,CLIENT如何继续执行其他任务?

ton*_*nga 6

如果您正在寻找REST异步客户端实现,您可以查看Jersey的异步客户端API.它可以很容易地与Spring集成.


小智 0

我建议在您的应用程序中添加对 groovy 的支持,以便您可以使用 AsyncHTTPBuilder 这正是您想要做的。它基本上在幕后使用 FutureTask。