当restapi在后台触发作业时,如何立即从它发送响应



我需要使用api触发一个作业,我不希望api只在作业完成后才给出响应,我想用"你的作业已经创建"来回应,并让作业在后台运行,几分钟后完成。

作为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
}

所以只有在作业完成后,类B才会返回到类A,我想让用户知道作业是被触发的,并且会在半小时后完成。如何做到这一点?如何跳转到return语句并向触发此作业的用户提供更新?

您应该以异步方式运行作业。

例如,通过EJB@异步

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

顺便说一句,对于http响应,这里最好的响应代码是202 accepted

最新更新