Mono/Flux:如何挂起线程并等待事件或超时

And*_*rey 1 java kotlin project-reactor

我想咨询如何解决 Mono/Flux 因延迟或超时而暂停和重新激活的问题。

任务是:应用程序将接收 HTTP 请求并提供响应。

当使用异步套接字接收请求时,应发送消息。我们需要等待具体的答复,但不超过30秒。

因此,我需要挂起线程,直到调用某些 Runnable,或者其他选项是每 0.2 秒查询一些变量,如果它设置为相关值,则继续该过程。

您能给我一些建议吗?

谢谢

小智 6

我认为你需要使用 Mono/Flux 的超时方法来设置该行为。例子:

yourMonoOrFlux.timeout(Duration.ofSeconds(30))
              .onErrorResume(yourFallbackMethod)
              ... //some other chained operations
Run Code Online (Sandbox Code Playgroud)

当出现问题时,还可以使用 onErrorResume 方法设置后备方法。

但如果你确实需要在这 30 秒内阻塞线程,你应该使用阻塞方法而不是超时。例子:

yourMonoOrFlux.block(Duration.ofSeconds(30))
              ... //other chained operations 
Run Code Online (Sandbox Code Playgroud)

参考反应堆官方文档