java - Spring Boot Webflux 反应式 API
问题描述
我希望得到一些关于我正在构建的小型 Spring Boot 应用程序的提示。
应用程序本身的功能应该类似于使用 Kafka 主题(或任何发布/订阅模式)。然而,我没有像 Kafka 这样的工具可用,所以它应该在应用程序本身内完成。
应用程序将有一个 RestController,它应该在事件发生时公开一个“热”事件流。
@GetMapping(produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
public Flux<Event> getApis() {
return …
}
应用程序本身将使用来自另一个应用程序的事件流。
我需要一些提示的地方是 - 我如何将此 API 的每个使用者视为新订阅者 - 并在我加入时向他们发布事件?实现一个完整的发布-订阅模式来跟踪订阅者以及他们何时停止使用端点当然应该是可能的。但我想知道是否没有使用 Springs Reactive 功能的更简单的解决方案。我进入的事件不需要存储 - 只需在事件发生时转发给每个订阅的消费者。
谢谢
解决方案
在从控制器处理程序返回您之前Flux<Event>
,请确保您始终返回:
- 相同的实例,例如作为属性保存在控制器中
- 应用
Flux.share()
它,以便所有订阅者共享相同的热门事件流
推荐阅读
- javascript - android浏览器上的随机数据返回
- r - 如何将 knn 模型用于 R 中的新数据?
- ios - 使用 UserDefaults 设置全局变量
- npm - 无法安装 vue cli
- sql - 使用 linq 根据另一个表中的两个外键从第一个表中选择数据
- javascript - 无法在未安装的组件上调用 setState(异步仍在运行)
- ruby-on-rails - 即使 nginx 配置错误,Rails 也会显示图像?
- php - 使用 vsftpd 将文件从浏览器上传到 ec2
- python - Python Pandas:按小时聚合数据并显示它而不是索引
- angular - Angular 路由器:重定向到 i18n URL