在 Springboot 中 Schedulers.elastic 时 Webflux 不传播异常

Webflux not propagating exception when Schedulers.elastic in Springboot

我在尝试使用 webflux 时在 Springboot 上处理异常时遇到问题。 我已经实现了一个 ResponseEntityExceptionHandler class,它工作正常,但是,如果从 WebFlux 线程抛出异常,那么它永远不会被调用(尽管如果使用 Schedulers.immediate(),在这种情况下是异常处理程序也称为)。 复制我发现的那个问题的最简单方法是执行:

Mono.fromCallable(() -> {
        throw new IllegalArgumentException();
    })
    .doOnError(throwable -> {
        throw new IllegalArgumentException();
    })
    .subscribeOn(Schedulers.elastic())
    .subscribe(result -> {}, throwable -> {throw new IllegalArgumentException();});

正如我所说,如果我不使用 Schedulers.elastic() 而使用 Schedulers.immediate(),那么我可以在我的 ResponseEntityExceptionHandler class 上处理异常。我如何传播异常,以便我始终可以在我的处理程序上处理它 class?

提前致谢

我终于让 Spring 处理异常(通过 ExceptionHandler),所以在我的控制器中我将响应设置为:

final DeferredResult<ResponseDTO> result = new DeferredResult<>();
Mono.fromCallable(...).subscribe(result::setResult, result::setErrorResult);