首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quarkus:执行并行unis

Quarkus:执行并行unis
EN

Stack Overflow用户
提问于 2020-09-11 16:40:03
回答 1查看 436关注 0票数 2

在一个quarkus / kotlin应用程序中,我希望同时启动多个数据库请求。我是quarkys的新手,我不确定我做的事情是否正确:

代码语言:javascript
复制
    val uni1 = Uni.createFrom().item(repo1).onItem().apply { it.request() }
    val uni2 = Uni.createFrom().item(repo2).onItem().apply { it.request() }

    return Uni.combine().all()
      .unis(uni1, uni2)
      .asTuple()
      .onItem()
      .apply { tuple ->
        Result(tuple.item1, tuple.item2) }
      .await()
      .indefinitely()

request()真的会并行制作吗?在夸克中这样做是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-18 14:28:50

是的,你的代码是正确的。

Uni.combine().all()同时运行所有传递的Unis。当所有Unis都已完成(发出一个结果)时,您将获得元组(包含单个结果)。

从您的代码中,您可以删除元组步骤,而改用combineWith

最后,请注意,如果其中一个Uni未完成(无论出于何种原因),await().indefinitely()将永远阻塞调用者线程。我强烈推荐使用await().atMost(...)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63843627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档