Spring Boot Webflux 反应式 API

Posted

技术标签:

【中文标题】Spring Boot Webflux 反应式 API【英文标题】:Spring Boot Webflux reactive api 【发布时间】:2020-04-05 03:37:00 【问题描述】:

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

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

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

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

在从控制器处理程序返回您的 Flux&lt;Event&gt; 之前,请确保您始终返回:

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

【讨论】:

这正是我所需要的。并且自己实现发布/订阅更容易。感谢您的帮助

以上是关于Spring Boot Webflux 反应式 API的主要内容,如果未能解决你的问题,请参考以下文章

使用 @EnableResourceServer 支持 Spring Boot 反应式 (webflux)

Spring Boot Webflux 反应式 API

如何使 WebFilter 在非 WebFlux/非反应式 Spring Boot 应用程序中工作?

Spring Boot Webflux 无法返回 application/xml

webflux spring boot 应用程序的过滤器,返回 ResponseEntity<?>

在 spring boot 基于 webflux 的微服务中,订阅者是谁?