Java Rest service - ответ принят и обработан запрос - PullRequest
0 голосов
/ 13 марта 2019

Я хотел бы написать службу отдыха Java, которая принимает запрос, немедленно отвечает 200 или 202 и обрабатывает запрос за сценой. пользователь не должен ждать завершения всего процесса. пожалуйста, предложите

мой контроллер класса отдыха

 @Override
  public Response generateReport(Request requst) {
     return service.generateReport(requst);
  }

Класс обслуживания:

@Override
@Async
public Response generateReport(Request requst) {
     generateReport(requst);
     return Response.ok().build();
  }


public void generateReport(Request requst) {
    <!-- login to process the request. it will take 15 mins to complete -->
  }

1 Ответ

0 голосов
/ 13 марта 2019

Кажется, вы хотите обработать асинхронный запрос, вот что я бы сделал.

Получив исходный запрос, вы можете создать новый ресурс и вернуть код состояния 202 (Принят) с представлениемновый ресурс.

Цель этого ресурса - позволить клиенту отслеживать состояние асинхронной задачи.Разработайте этот ресурс таким образом, чтобы его представление включало в себя текущее состояние запроса и связанную с ним информацию, такую ​​как оценка времени.

Когда клиент отправляет запрос GET ресурсу задачи, выполните одно из следующих действий в зависимости от текущегостатус запроса:

Обработка еще - код ответа возврата 200 (ОК) и представление ресурса задачи с текущим статусом.При успешном завершении - возврат кода ответа 303 (см. Другое) и заголовок Location, содержащий URI ресурса, который показывает результат выполнения задачи.

При сбое задачи - возврат кода ответа 200 (ОК) с представлениемресурса задачи, сообщающего, что создание ресурса не удалось.Клиенты должны будут прочитать текст представления, чтобы найти причину сбоя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...