reactor / reactor-core

Non-Blocking Reactive Foundation for the JVM

Home Page:http://projectreactor.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

delayElements Not executed at the specified interval

yuanpan365 opened this issue · comments

Flux messageFlux= Flux.fromIterable(messages).delayElements(Duration.ofMillis(20));
Flux<Tuple2<Long, Message>> elapsedFlux = messageFlux.elapsed();
elapsedFlux.subscribe(tuple -> {
Long interval = tuple.getT1();
Message value = tuple.getT2();
System.out.println("Interval: " + interval + ", Value: " + value + "current: " + System.currentTimeMillis());
});

Why is the interval between the second set of data 540ms

print results :
Interval: 48, Value: {"messageType":"REPORT_PROPERTY","messageId":"0","timestamp":1718698973217}current: 1718698974186
Interval: 540, Value: {"messageType":"REPORT_PROPERTY","messageId":"1","timestamp":1718698973218}current: 1718698974213
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"2","timestamp":1718698973218}current: 1718698974243
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"3","timestamp":1718698973218}current: 1718698974273
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"4","timestamp":1718698973218}current: 1718698974303
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"5","timestamp":1718698973218}current: 1718698974333
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"6","timestamp":1718698973218}current: 1718698974363
Interval: 33, Value: {"messageType":"REPORT_PROPERTY","messageId":"7","timestamp":1718698973218}current: 1718698974396
Interval: 27, Value: {"messageType":"REPORT_PROPERTY","messageId":"8","timestamp":1718698973218}current: 1718698974423
Interval: 31, Value: {"messageType":"REPORT_PROPERTY","messageId":"9","timestamp":1718698973218}current: 1718698974454
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"10","timestamp":1718698973218}current: 1718698974484
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"11","timestamp":1718698973218}current: 1718698974514
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"12","timestamp":1718698973218}current: 1718698974544
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"13","timestamp":1718698973218}current: 1718698974574
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"14","timestamp":1718698973218}current: 1718698974604
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"15","timestamp":1718698973218}current: 1718698974634
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"16","timestamp":1718698973218}current: 1718698974664
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"17","timestamp":1718698973218}current: 1718698974694
Interval: 31, Value: {"messageType":"REPORT_PROPERTY","messageId":"18","timestamp":1718698973218}current: 1718698974725
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"19","timestamp":1718698973218}current: 1718698974755
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"20","timestamp":1718698973218}current: 1718698974785
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"21","timestamp":1718698973218}current: 1718698974815
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"22","timestamp":1718698973218}current: 1718698974845
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"23","timestamp":1718698973218}current: 1718698974875
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"24","timestamp":1718698973218}current: 1718698974905
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"25","timestamp":1718698973218}current: 1718698974935
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"26","timestamp":1718698973218}current: 1718698974965
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"27","timestamp":1718698973218}current: 1718698974995
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"28","timestamp":1718698973218}current: 1718698975025
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"29","timestamp":1718698973218}current: 1718698975055
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"30","timestamp":1718698973218}current: 1718698975085
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"31","timestamp":1718698973218}current: 1718698975115
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"32","timestamp":1718698973218}current: 1718698975145
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"33","timestamp":1718698973218}current: 1718698975175
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"34","timestamp":1718698973218}current: 1718698975205
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"35","timestamp":1718698973218}current: 1718698975235
Interval: 31, Value: {"messageType":"REPORT_PROPERTY","messageId":"36","timestamp":1718698973218}current: 1718698975266
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"37","timestamp":1718698973218}current: 1718698975296
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"38","timestamp":1718698973218}current: 1718698975326
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"39","timestamp":1718698973218}current: 1718698975356
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"40","timestamp":1718698973218}current: 1718698975386
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"41","timestamp":1718698973218}current: 1718698975416
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"42","timestamp":1718698973218}current: 1718698975446
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"43","timestamp":1718698973218}current: 1718698975476
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"44","timestamp":1718698973218}current: 1718698975506
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"45","timestamp":1718698973218}current: 1718698975536
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"46","timestamp":1718698973218}current: 1718698975566
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"47","timestamp":1718698973218}current: 1718698975596
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"48","timestamp":1718698973218}current: 1718698975626
Interval: 30, Value: {"messageType":"REPORT_PROPERTY","messageId":"49","timestamp":1718698973218}current: 1718698975656

I ran the following

public static void main(String[] args) throws Exception {
	List<String> messages = Arrays.stream(
			new String[] { "a", "b", "c", "d", "e", "f", "g", "h" }
	).collect(Collectors.toList());

	Flux<String> messageFlux = Flux.fromIterable(messages)
	                               .delayElements(Duration.ofMillis(20));

	Flux<Tuple2<Long, String>> elapsedFlux = messageFlux.elapsed();

	elapsedFlux.subscribe(tuple -> {
		Long interval = tuple.getT1();
		String value = tuple.getT2();
		System.out.println("Interval: " + interval + ", Value: " + value +
				", Current: " + System.currentTimeMillis());
	});

	Thread.sleep(1000);
}

And got

Interval: 23, Value: a, Current: 1718703560258
Interval: 23, Value: b, Current: 1718703560280
Interval: 25, Value: c, Current: 1718703560305
Interval: 25, Value: d, Current: 1718703560330
Interval: 25, Value: e, Current: 1718703560355
Interval: 25, Value: f, Current: 1718703560380
Interval: 22, Value: g, Current: 1718703560402
Interval: 26, Value: h, Current: 1718703560428

From that it looks like there is no bug here, but rather a question. These are best suited for StackOverflow or Gitter as per our Contributing Guidelines.

Feel free to re-open if you are able to reproduce the problem with no dependencies and use of classes that we don't have defined. A minimal reproducer is required for us to investigate. In your case we don't know what Message is and I'd suspect it can introduce a delay when serialized via toString().