首页 > 解决方案 > 使用 fromCallable/fromSupplier 订阅时无法使用 Mono.error

问题描述

我正在尝试用 fromCallable 包装方法以从另一个线程执行我的方法。但是当我返回 as 时Mono.error,我的错误消费者在订阅它时不会捕获任何错误。相反,它只在我的日志上打印 Mono.error。我做错了吗?

Mono.fromCallable(()
                -> Mono.error(new Exception("error coming")))
                .subscribeOn(Schedulers.boundedElastic())
                .doOnError(throwable -> LOG.debug("error {}",throwable.getMessage()))
                .log()
                .subscribe(res ->LOG.debug("result {}", res),
                        err -> LOG.error("Error message {}", err.getMessage()));

标签: javareactive-programmingspring-webfluxproject-reactor

解决方案


Callable传递给Mono.fromCallable(...)应该:

  1. 返回要发射的元素,或
  2. 抛出异常(使用throw关键字)。

换句话说,不应该Callable返回a or ,这就是您的示例正在做的事情。MonoFlux


推荐阅读