Sampling elements 

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: 13
onNext: 28
onNext: 43
onNext: 58
onNext: 73
onNext: 89
onNext: 100

The preceding log shows that, even though we generate items sequentially every millisecond, the subscriber receives only a fraction of events within the desired limit. Through this approach, we may use passive rate limiting in cases where we do not need all incoming events for successful operation. 

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
52.15.129.90