首页 > 解决方案 > Spring Boot Webflux 反应式 API

问题描述

我希望得到一些关于我正在构建的小型 Spring Boot 应用程序的提示。

应用程序本身的功能应该类似于使用 Kafka 主题(或任何发布/订阅模式)。然而,我没有像 Kafka 这样的工具可用,所以它应该在应用程序本身内完成。

应用程序将有一个 RestController,它应该在事件发生时公开一个“热”事件流。

@GetMapping(produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
public Flux<Event> getApis() {
    return … 
}

应用程序本身将使用来自另一个应用程序的事件流。

我需要一些提示的地方是 - 我如何将此 API 的每个使用者视为新订阅者 - 并在我加入时向他们发布事件?实现一个完整的发布-订阅模式来跟踪订阅者以及他们何时停止使用端点当然应该是可能的。但我想知道是否没有使用 Springs Reactive 功能的更简单的解决方案。我进入的事件不需要存储 - 只需在事件发生时转发给每个订阅的消费者。

谢谢

标签: javaspring-bootspring-webfluxreactive

解决方案


在从控制器处理程序返回您之前Flux<Event>,请确保您始终返回:

  • 相同的实例,例如作为属性保存在控制器中
  • 应用Flux.share()它,以便所有订阅者共享相同的热门事件流

推荐阅读