Quarkus RestEasy ws.rs资源,CompletionStage异常处理

时间:2019-12-09 23:12:54

标签: resteasy quarkus

如果我以此方式定义了我的安逸资源:

@GET
@Path("/stuff")
@Produces(MediaType.APPLICATION_JSON)
public Response getStuff() {
  final Single<Stuff> stuffSingle = stuffService.getStuffAsync();
   return Response.ok().entity(stuffSingle.blockingGet()).build();
 }

在getStuffAsync()方法的某处发生异常。

我可以使用ExceptionMapper委托它来处理异常。

@Provider
public class MyExceptionMapper implements ExceptionMapper<Exception> { ..

而且有效-可以处理异常并将其传递给用户。

但是,如果我使用异步休息端点:

@Path("/stuff")
@Produces(MediaType.APPLICATION_JSON)
public CompletionStage<Stuff> 

    stuffSingle = stuffService.getStufAsync();

    final CompletableFuture<Stuff> stuffSignle = new CompletableFuture<>();
    stuffSignle.subscribe(future::complete);

    return future

}

万一发生异常,端点将永远挂起。没有响应会传播给用户。没有MyExceptionMapper参与。

问:在Quarkus中如何轻松使用CompletionStage处理它

0 个答案:

没有答案