java - 使用 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()));
解决方案
Callable
传递给Mono.fromCallable(...)
应该:
- 返回要发射的元素,或
- 抛出异常(使用
throw
关键字)。
换句话说,不应该Callable
返回a or ,这就是您的示例正在做的事情。Mono
Flux
推荐阅读
- python - 为我的 NMT 模型创建一个 python 模块
- sql - SQL语句,检查其他行是否具有相同的值
- javascript - Pangram 代码 - 无法理解我编写的代码中的问题 - 总是返回 false
- spring - Spring Boot Multitenancy - Hibernate - 在实体结构发生变化时使用 ddl-auto 更新所有模式
- spring - JPA - 使用 DDL 生成创建表时出错
- javascript - 根据 react-hooks 功能组件中的搜索结果更新子组件
- reactjs - useState 不重新渲染
- c++ - 无序映射的迭代器向量 - 编译错误
- tfs - TFS 服务器 2013 到 Azure DevOps 服务器 2020
- c++ - 试图故意造成内存泄漏,但程序结束后就消失了