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

Posted

技术标签:

【中文标题】Project Reactor:仅在未发出第一项时通量超时【英文标题】:Project Reactor: Flux Timeout only if first item is not emitted 【发布时间】:2020-07-08 13:48:37 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

这对我有用。 而不是:

messageFlux.timeout(Duration.ofSeconds(30))

我愿意:

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

【讨论】:

以上是关于Project Reactor:仅在未发出第一项时通量超时的主要内容,如果未能解决你的问题,请参考以下文章

ListFragment 仅在带有 ExpandableListadpater 的片段视图中显示第一项

仅在 Json Swift 3 中附加数组的第一项

#yyds干货盘点#Project Reactor

为啥 KeyListener 仅在未按下按钮时才起作用?

Laravel Blade 仅在未登录时显示

如何测试通道是不是关闭并仅在未关闭时发送给它