项目反应堆:仅当第一项未发出时才出现通量超时

Sta*_*kii 7 java flux reactive

我有一个通量,应该几乎立即发出一个项目。此后,它可能会在很长一段时间内不再发射物品。如果最初没有收到任何项目,我希望它超时。但如果我使用该timeout(Duration)方法,每次在给定时间内没有收到任何项目时,它都会超时。

我现在的代码由于上述原因而不起作用:

messageFlux.timeout(Duration.ofSeconds(30)).doOnError(e -> {
    // handle error
}).subscribe(m -> messageService.consumeMessage(m));
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以有效地做到这一点?

Sta*_*kii 3

这对我有用。代替:

messageFlux.timeout(Duration.ofSeconds(30))
Run Code Online (Sandbox Code Playgroud)

我愿意:

messageFlux.timeout(Mono.just(0L).delayElement(Duration.ofSeconds(30)))
Run Code Online (Sandbox Code Playgroud)