1

我是响应式编程世界的新手。我目前正在使用 Mutiny 库在 Java 反应式应用程序中工作。

我需要开发一个循环,等待上一次迭代完成才能开始下一次迭代。例如:

List<Uni<T>> uniList = new ArrayList<>();
for (T item : items) { //items is an already fulfilled collection
    uniList.add(this.doSomethingAndReturnInUni(item));
}


return Uni.combine().all().unis(uniList).combinedWith(unisToCombine -> {
    List<T> list = new ArrayList<>();
    unisToCombine.forEach(x ->list.add(x));
    return list;
  });

示例中的for 循环每次迭代生成一个线程。我想知道如何命令对方法doSomethingAndReturnInUni()的第 i 次调用等待 (i-1) 调用以触发事件,即按顺序进行 for 循环。有可能以这种方式订阅这些事件吗?

4

2 回答 2

0

我不知道你为什么使用 uni,因为它应该只处理一个操作,for 循环你应该使用 multi,你可以在其中处理背压,并且只有在一个事件完成时才获得下一个事件。Multi 可以按顺序和并行运行。

https://quarkus.io/blog/mutiny-back-pressure/

于 2021-12-06T15:02:09.767 回答
0

我也做了同样的事情,使用 Multi 在这里查看 'generateData()' 方法:

https://github.com/Serkan80/quarkus-quickstarts/blob/development/redis-streams-quickstart/weather-producer/src/main/java/org/acme/redis/streams/producer/ValuesGenerator.java

于 2021-12-14T20:30:53.867 回答