【发布时间】:2018-02-26 14:34:14
【问题描述】:
我正在尝试使用这个有趣的存储库方法:
@Tailable
Flux<Movie> findWithTailableCursorBy();
通过在控制器中公开它, 在有上限的集合中流式传输新保存的文档:
这是一个 DataAppInitializr :
@EventListener(ApplicationReadyEvent.class)
public void run(ApplicationReadyEvent evt) {
operations.collectionExists(Movie.class)
.flatMap(exists -> exists ? operations.dropCollection(Movie.class) : Mono.just(exists))
.then(operations.createCollection(Movie.class, CollectionOptions.empty()
.size(256 * 256)
.maxDocuments(10)
.capped()))
.thenMany(operations.insertAll(Flux.just("Jeyda", "Kaf Efrit").map(title-> new Movie(title)).collectList()))
.subscribe();
}
这是控制器方法:
@GetMapping(value = "/tail", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
Flux<Movie> allTail() {
return movieRepository.findWithTailableCursorBy();
}
我也不例外, 我只是在浏览器中看到一个白页,没有新文档流。我错过了一步吗?
提前谢谢你!
【问题讨论】:
-
您正在创建电影并查询人员。这是什么?这是正确的吗?
-
您是否启用了
@EnableReactiveMongoRepositories并且您确定将记录插入到mongo 中。因为我将文档手动添加到 mongo 中并且您的代码有效。 -
持久性没有问题,一切正常。数据初始化程序将文档添加到上限集合。我可以请求所有文档 Flux
,即使我添加了这个注释(也可以通过查看类路径中的 dep 来自动启动处理它)我再次得到了相同的结果。 -
是的。像桃子一样工作
标签: java spring reactive-programming spring-data-mongodb project-reactor