java - 通量发生器 - 当没有可用数据时如何处理?

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

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

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

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

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

1) 调用 onError 并显示自定义异常,表明当时没有可用数据

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

最佳答案

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-

关于java - 通量发生器 - 当没有可用数据时如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60909798/

相关文章:

spring - 哪个版本的spring boot包含了@WebIntegrationTest,添加时在Intellij中显示为红色

java - Spring Boot 与 thymeleaf 方法不调用

java - 抛出异常以在 API 中向用户传播响应消息是最佳实践吗?

Java 应用程序 : Sequence workflow pattern

node.js - 将 Express.js 与 React.js 结合使用的推荐方式?

java - 安卓。 socket 。连接失败

java - 访问对象列表中对象中的字段

java - 从 Seam 调用 Web 服务

java - 如何以数字0退出循环?但现在我有其他问题

java - 当返回 1xx 状态代码时,Spring Boot 请求卡在那里