Я хочу поддерживать синхронный и асинхронный вызов с использованием RESTEasy-JAXRS. И мой асинхронный вызов должен быть основан на обратном вызове, где запрос Async будет иметь callbackURI, запрос обрабатывается асинхронно и по завершении делает вызов callbackURI с состоянием/результатом операции. Может кто-то указать мне, чтобы исправить место? Я вижу много о модели опроса, но не обратный вызов с RESTEasy.RESTEasy + Асинхронный + метод обратного вызова + Java
Я новичок в асинхронные вещи ...
Заранее спасибо!
Спасибо за ваш отзыв rmlan.Yes, но у нас есть поддержка в JAX-RS для обработки асинхронной работы с использованием @Suspended & AsyncResponse. Я сделал это со следующим кодом, но я не могу найти способ сделать обратный вызов для Клиента, который вызвал API после завершения задачи с этим запросом.
@GET
@Path("/async")
public String checkAsync(@Suspended final AsyncResponse response) {
response.setTimeoutHandler(new TimeoutHandler() {
@Override
public void handleTimeout(AsyncResponse asyncResponse) {
response.resume(Response.status(Response.Status.SERVICE_UNAVAILABLE)
.entity("Operation time out.").build());
}
});
response.setTimeout(2, TimeUnit.SECONDS);
new Thread(new Runnable() {
@Override
public void run() {
String result = veryExpensiveOperation();
response.resume(result);
}
private String veryExpensiveOperation() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.debug("Task is processed fully");
return "Successful";
}
}).start();
return "nothing";
}
Как клиент обрабатывает вызов и ответ на ваш сервис Resteasy действительно не имеет ничего общего с Resteasy. Независимо от того, будет ли выполнять асинхронный вызов, он будет полностью связан с клиентом. – rmlan
Спасибо за ваш отзыв rmlan !. Я добавил свой код выше. Не могли бы вы рассказать мне кое-что? – Mohan