My problem might be very easy to solve, but I don\'t get it at the moment. In my Quarkus-App I have a REST-Endpoint which should call a method, don\'t wait for the result an
We've found a solution:
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response calculateAsync(String input) {
Uni.createFrom().item(input).emitOn(Infrastructure.getDefaultWorkerPool()).subscribe().with(
item -> process(input), Throwable::printStackTrace
);
return Response.accepted().build();
}
You can use @Suspended AsyncResponse response
in parameters and make the method return void
Here's example of a similar method:
@GET
@Produces(MediaType.TEXT_PLAIN)
public void hello(@Suspended AsyncResponse response) throws InterruptedException {
response.resume(Response.ok().build());
Thread.sleep(10000);
System.out.println("Do some work");
}