Как отправить ответ сразу от остальных API, когда он запускает работу в бэкэнде? - PullRequest
1 голос
/ 24 апреля 2020

Мне нужно запустить задание с помощью API, я не хочу, чтобы API выдавал ответ только после завершения задания, хотел бы ответить «вашим заданием было создано» и позволить заданию запускаться в бэкэнде и завершаться. через пару минут.

Поскольку я новичок ie для jaxrs, я не смог найти решение этой проблемы. Все, что я могу видеть, это отправить ответ 201. да, но как?

Ниже приведен код, который я использую:

@Path("{triggerjob}")
public Response ClassA {
ClassB objB = new ClassB();
objB.methodOne(jsonObject);
//what to do for response message as soon as job submitted?
return Response.status(201).build();
}

public void Class B {
ClassC objC = new ClassC();
objC.methodOne(jsonObject); //This triggers the job and job runs for 1/2 hour
}

Так что classB вернется в класс A только после того, как работа будет завершена, я хотел бы, чтобы пользователь знал, что задание запущено и будет завершено через полчаса. Как этого добиться? Как перейти к инструкции возврата и предоставить обновление пользователю, который запустил эту работу?

1 Ответ

1 голос
/ 24 апреля 2020

Вы должны выполнить свою работу в асинхронном режиме c.

Например, через EJB @ Asynchronous

@Stateless
public class B  {
    @Asynchronous
    public void doAsynchronousWork() {

    }
}

Кстати, для ответа http лучший код ответа здесь будет 202 accepted

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