如何计算项目反应堆通量的平均值?

How to calculate the average of a Project Reactor Flux?

我有一个 returns 一个 Flux<SensorData> 的方法,我们假设 SensorData 有一个字段 measure: Integer.

我想计算整个Flux的measure的平均值。怎么做到的?


val sensorFlux: Flux<SensorData> = sensorRepository.findAll()
...

Mono<Double> average = sensorFlux.collect(Collectors.averagingInt(SensorData::getMeasure))

另一种使用辅助对象的方法:

val average = sensorFlux.map { it.measure }
                .map { Measure(1, it) }
                .reduce { t: Measure, u: Measure -> Measure(t.elements + u.elements, t.sum + u.sum) }
                .map { it.sum / it.elements }

---

data class Measure(var elements: Int, var sum: Long)