Fel*_*lix 4 java reactor flux java-stream spring-webflux
我正在尝试找出无限流和无限磁通量(如果有)之间的概念差异。
为此,我想出了以下示例来说明无限的流/通量
@Test
public void infinteStream() {
//Prints infinite number of integers
Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1);
infiniteStream.forEach(System.out::println);
}
@Test
public void infiniteFlux() {
//Prints infinite number of date strings (every second)
Flux<LocalDateTime> localDateTimeFlux = Flux.interval(Duration.ofSeconds(1))
.map(t -> LocalDateTime.now());
localDateTimeFlux.subscribe(t -> System.out.println(t.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"))));
}
Run Code Online (Sandbox Code Playgroud)
关于这些示例,我有一个问题:是否有带Flux的infinteStream()和带Stream的infinteFlux()的模拟?而且,更一般而言,无限流和磁通量之间有什么区别吗?
在此先感谢Felix
Stream并且Flux有很大的不同:
Stream 只能使用一次,而您可以多次订阅 FluxStream基于拉(使用一个元素调用下一个元素)与Flux拥有混合推/拉模型,发布者可以推入元素,但仍然必须尊重消费者发出的背压Stream是同步序列还是Flux可以表示异步序列在示例中,您使用生成了一个无限的值序列Stream,它们的生成和消耗要尽可能快。在您的Flux示例中,您以固定的时间间隔生成值(我不确定您可以使用Stream)。使用Flux,您也可以Flux.generate无间隔地进行排序,就像您的Stream示例一样。
通常,您可以考虑Flux将Stream+ CompletableFuture与以下项混合使用: