你能合并两个 Flux 而不阻塞,使得结果只包含独特的元素吗?

Can you merge two Flux, without blocking, such that the result only contains unique elements?

有没有办法合并两个 Flux,使结果只包含独特的元素?我可以阻塞输出然后将其转换为一个集合,但是有没有一种方法 依赖于阻塞?

来源 (Kotlin)

val set1 = Flux.just(1, 2, 3, 4, 5)
val set2 = Flux.just(2, 4, 6, 8, 10)

val mergedSet = set1.mergeWith(set2)

println(mergedSet.collectList().block())

输出

[1, 2, 3, 4, 5, 2, 4, 6, 8, 10]

期望的输出(顺序不重要)

[1, 2, 3, 4, 5, 6, 8, 10]

你可以使用 Flux 的 merge method and then apply distinct() 给它。

Flux.merge (Flux.just(1, 2, 3, 4, 5), Flux.just(2, 4, 6, 8, 10)).distinct();

这样你就得到了一个只产生不同值的通量。