Выполните задачу асинхронно, но сначала ответьте - PullRequest
0 голосов
/ 16 января 2019

Это моя первая попытка сделать асинхронную программу с Java.

Мое требование заключается в том, чтобы при получении запроса мне приходилось начинать задание, которое может занять час. Поэтому я немедленно ответил пользователю, что «задание началось» до его завершения. Я забавляю apache timcat версии 8.5.23.

Я предполагал, что AsyncContext.start() поможет мне, но я обнаружил, что AsyncContext не вернет ответ клиенту, пока он не вызовет onComplete(AsyncEvent event).

Можно ли как-то ответить пользователю до того, как onComplete(AsyncEvent event) произойдет?

Я видел похожий вопрос Как выполнить код после ответа в JavaEE .

Я слышал, что https://vertx.io/docs/guide-for-java-devs/ может помочь мне, но прежде чем погрузиться вглубь; Мне интересно, есть ли другой лучший способ или технология, чтобы сделать это?

Заранее спасибо.

1 Ответ

0 голосов
/ 16 января 2019

Вместо использования AsyncContext.start(Runnable) я использовал CompletableFuture.runAsync(Runnable), и он работал как ожидалось.

...