当前位置: 首页 > 知识库问答 >
问题:

将未来转换为单晶

赵涵亮
2023-03-14

我有返回convert Java . util . concurrent . future的遗留代码,现在我应该将这个方法调用包装在一个返回reactor publishers Mono或Flux的层中。我相信转换到它们中任何一个的方法应该是相似的,那么什么是转换到单声道的正确方法呢?

例如,假设我从API获得未来,我需要Mono

共有2个答案

冷越泽
2023-03-14

您可以使用Future::get作为Mono::fromSupply ier中的供应商。像这样,Mono.fromSupplier(Future::get)

蓝鸿哲
2023-03-14

考虑到从<code>未来</code>获得结果总是会被阻塞,一种可能的解决方案是将该计算转移到阻塞友好的调度器。

 Mono.fromCallable(() -> {
        try {
            Future future = null;
            return future.get();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
 }).subscribeOn(Schedulers.boundedElastic());

您可以使用BlockHound验证您的代码是否有效无阻塞 https://github.com/reactor/BlockHound

 类似资料: