如何使用Reactor framework 2.x执行multithreading映射/减少?

我之前曾向Reactor 1.x提出这个问题 :

假设我有一个Collection 。 我要:

将每个Map实例同时转换为Foo类型的对象(每个实例完全独立于另一个实例 – 不需要串行/迭代地转换每个实例)。

当所有这些都被转换时,我想要一个方法onReduce(Collection foos)被调用 – 该参数包含所有生成的Foo实例。

但我们似乎无法找到Reactor 2.x的等效解决方案 – 只需单线程。

你如何在Reactor 2.x中执行multithreadingmap / reduce? 例如,如何使用基于ExecutorService的Dispatcher执行此操作?

现在使用Reactor 2.0非常简单。 你可以这样做:

 List> data = readData(); // <1> Streams.from(data) .flatMap(m -> Streams.just(m) .dispatchOn(Environment.cachedDispatcher()) // <2> .map(ignored -> Thread.currentThread().getName())) .buffer() // <3> .consume(s -> System.out.println("s: " + s)); // <4> 
  1. 根据输入数据创建Stream
  2. 为每个Map创建一个新Stream ,并在给定的Dispatcher上调度map操作。
  3. 缓冲所有值,直到完成,清空收集时将向下游发送。
  4. 消耗列表,它是来自子流的负载平衡变换的结果。