如何使用 Reactor 创建随机数生成器?
How to create a random number generator using Reactor?
我想通过重复发射随机数来模拟测量数据。我尝试用 Reactor 来做,但它没有产生任何输出:
private static Random random = new Random();
public static void main(String[] args) throws InterruptedException {
Flux<Double> doubleGenerator = Flux.generate(
() -> random.nextDouble(),
(ignored, sink) -> {
sink.next(random.nextDouble());
return 0.0;
});
Flux<Long> timer = Flux.intervalMillis(1000);
Flux.combineLatest(doubleGenerator, timer, (value, ignored) -> value)
.subscribe(System.out::println);
}
如何使用 Reactor 创建随机值流?
我使用 Reactor 3.1 解决了这个问题,所以在下面的解决方案中 Flux.intervalMillis(long)
已更改为 Flux.interval(Duration)
。本质上,我创建了一个 Flux,它每隔一段时间(在我的例子中是每秒一次)发出一个数字,然后将其映射到一个随机数。
final Random random = new Random();
Flux.interval(Duration.ofSeconds(1))
.map(pulse -> random.nextDouble())
.subscribe(System.out::println);
Thread.sleep(5000);
我只是用普通的 main()
方法做了我的例子,所以为了让 Flux 实际存在足够长的时间来发出数据,我添加了睡眠。
我想通过重复发射随机数来模拟测量数据。我尝试用 Reactor 来做,但它没有产生任何输出:
private static Random random = new Random();
public static void main(String[] args) throws InterruptedException {
Flux<Double> doubleGenerator = Flux.generate(
() -> random.nextDouble(),
(ignored, sink) -> {
sink.next(random.nextDouble());
return 0.0;
});
Flux<Long> timer = Flux.intervalMillis(1000);
Flux.combineLatest(doubleGenerator, timer, (value, ignored) -> value)
.subscribe(System.out::println);
}
如何使用 Reactor 创建随机值流?
我使用 Reactor 3.1 解决了这个问题,所以在下面的解决方案中 Flux.intervalMillis(long)
已更改为 Flux.interval(Duration)
。本质上,我创建了一个 Flux,它每隔一段时间(在我的例子中是每秒一次)发出一个数字,然后将其映射到一个随机数。
final Random random = new Random();
Flux.interval(Duration.ofSeconds(1))
.map(pulse -> random.nextDouble())
.subscribe(System.out::println);
Thread.sleep(5000);
我只是用普通的 main()
方法做了我的例子,所以为了让 Flux 实际存在足够长的时间来发出数据,我添加了睡眠。