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. 的毗连与一些全球Publisher Bean我写新Foos为他们创造
  2. 添加onComplete其重新订阅到Repository(有一些标准来筛选重复的条目)
  3. 使用repeat,让客户端过滤副本
  4. 还有其他?

回答

1

如果相应地配置您的MongoDB集合(它必须为上限),你可以使用tailable光标达到你想要什么,只需添加上你的储存库@Tailable注解。请参阅Spring Data MongoDB reference documentation about infinite streams

+0

只是后续问题。这是否意味着,我们需要创建一个单独的集合(封顶)以使其工作? – pvpkiran

+0

集合的确需要加盖。这是MongoDB具备此功能的条件。 –

+0

谢谢。对于MongoDB也是新手,我没有阅读文档中的Mongo特定部分。 – JudgingNotJudging

相关问题