Reactor 中 Flux 的随机排放?

问题描述 投票:0回答:2

我有一个

Flux
,我想洗牌它的排放。

排放量:

1, 2, 3, ...

我想要:

32, 5, 9, ...

在 Reactor 中有可能吗?

java project-reactor
2个回答
2
投票

我认为 Reactor 没有为您洗牌的功能,但您可以采取一种解决方法。 如果你想保持上游原样,

Random random = new Random();
Flux.range(1,256)
    .flatMap(integer -> Flux.just(integer).delayElements(Duration.ofMillis(random.nextInt(256))))
    .subscribe(System.out::println);

}

如果需要随机元素:

Flux.range(1,256)
        .map(integer -> random.nextInt(256))
        .subscribe(System.out::println)

0
投票

另一种更优雅的方式是使用

Flux.generate()
发出一个随机值:

Random random = new Random();

Flux.generate(sink -> sink.next(random.nextInt(256)))
        .subscribe(System.out::println);
© www.soinside.com 2019 - 2024. All rights reserved.