我需要运行一些同步代码,然后在Quarkus中运行异步代码。文档听起来很有希望https://smallrye.io/smallrye-mutiny/2.2.0/guides/imperative-to-reactive/,但它似乎是过时的,因为Uni.createFrom()不返回Uni,而是返回UniCreate对象,并且自Quarkus Insights谈话录制以来,一些方法名称似乎已经更改。
我试过几种不同的方法,但都没有成功。这听起来像方法'transform'可以帮助,但我还没有找到如何在此上下文中使用它的示例。其他选项返回“线程不能被阻塞”。
我在找这样的东西:
public Multi<MyReponseMulti> queryAsStream(String query) {
return Uni.createFrom().
item(() -> {
MyReponseUni myResponseUni = this.invokeRemoteServiceUsingBlockingIO(query);
return this.invokeRemoteServiceUsingReactive(myResponseUni);
});
.runSubscriptionOn(Infrastructure.getDefaultWorkerPool())
.subscribe().asCompletionStage();
}
现在上面的代码有一个编译错误:
Type mismatch: cannot convert from CompletableFuture<Multi<MyReponseMulti>> to Multi<MyReponseMulti>
有人能帮帮忙吗?谢谢!
1条答案
按热度按时间9udxz4iz1#
我相信你需要这样的东西: