有限源上的反应流仍然为未来事件开放

问题描述 投票:1回答:1

我正在使用Spring Webflux,Spring Data和Project Reactor进行非阻塞I / O(Spring Boot 2.0.0.M7)。

我的目标是创建类似股票行情的API,以允许客户端根据某些条件从端点请求所有资源,并接收在初始请求之后创建的新资源。 Reactive MongoDB是后备存储。基本的HandlerFunction实现如下所示。

Mono<ServerResponse> getFoos(ServerRequest request) {
    ok().contentType(TEXT_EVENT_STREAM)
            .body(fooRepository.findAll(), Foo)
}

显然,这只返回当前可用的所有Foos,然后Publisher关闭连接,并且没有新的Foos被发送到客户端。我的问题是用什么模式来添加一个可以接受新条目的无限流?

  1. Concat与一些全球Publisher Bean,我写了新的Foos,因为他们被创建
  2. 添加一个重新订阅onCompleteRepository(带有一些标准来过滤重复的条目)
  3. 使用repeat并让客户端过滤重复项
  4. 别的什么?
spring-data reactive-programming project-reactor spring-webflux
1个回答
1
投票

如果您相应地配置MongoDB集合(必须加上限制),您可以使用tailable游标来实现您想要的,只需在存储库中添加@Tailable注释即可。见Spring Data MongoDB reference documentation about infinite streams

© www.soinside.com 2019 - 2024. All rights reserved.