October 2018
Intermediate to advanced
556 pages
15h 18m
English
For a high-throughput scenario, it may make sense to process only a fraction of events by applying the sampling technique. Reactor allows us to do so with the sample and sampleTimeout operators. So, a sequence may periodically emit an item corresponding to the most recently seen value within a time window. Let's assume the following code:
Flux.range(1, 100) .delayElements(Duration.ofMillis(1)) .sample(Duration.ofMillis(20)) .subscribe(e -> log.info("onNext: {}", e));
The preceding code generates the following output:
onNext: 13onNext: 28onNext: 43onNext: 58onNext: 73onNext: 89onNext: 100
The preceding log shows that, even though we generate items sequentially every millisecond, the subscriber receives only a fraction of ...