Project Reactor:仅当未发出第一项时通量超时

Project Reactor: Flux Timeout only if first item is not emitted

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

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

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

有没有办法有效地做到这一点?

这对我有用。 而不是:

messageFlux.timeout(Duration.ofSeconds(30))

我愿意:

messageFlux.timeout(Mono.just(0L).delayElement(Duration.ofSeconds(30)))