【问题标题】:Flux Generator - How to handle when there are no data available?Flux Generator - 没有可用数据时如何处理?
【发布时间】:2020-03-29 03:22:55
【问题描述】:

问题:当没有更多数据时,我们如何处理Flux Generator?

我正在使用 Project Reactor 的 Flux API 来轮询放入 Redis 中的数据(通过外部服务)。这需要无限轮询,直到服务关闭/终止/停止。

我正在使用Flux Generator 从 Redis 中获取数据。 在某些情况下,Redis 中将有一段时间没有可用数据,因此 Generator 将无法调用 onNext。但我想在 Redis 中有可用数据时恢复。

我该如何处理这种情况?我看到以下选项:

1) 调用 onError 时出现自定义异常,指出当时没有可用数据

2) 调用complete 发出信号 - 在这种情况下,我会定期创建 Flux 实例,当没有任何数据时也会完成相同的操作。

【问题讨论】:

    标签: java spring-boot microservices project-reactor reactive-streams


    【解决方案1】:

    Flux.generate 用于保证始终生成的数据生成函数。使用Flux.create[1](如果可以从多个线程通知 Redis 侦听器)或Flux.push[2](如果保证从单个线程通知 Redis 侦听器)。

    [1]https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#create-java.util.function.Consumer-

    [2]https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#push-java.util.function.Consumer-

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 2014-12-07
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2021-01-20
      • 2015-09-28
      • 2015-08-19
      • 2015-06-17
      相关资源
      最近更新 更多