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)))
我有一个应该几乎立即发射物品的通量。在此之后,它可能会在很长一段时间内不发出任何物品。
如果最初没有收到任何项目,我希望它超时。但是如果我使用 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)))