MongoDB Spring Data 中的非阻塞查询



我想通过Spring Data使用MongoDB的Async Client API访问MongoDB来执行非阻塞数据库查询。

到目前为止,我只看到了返回

  • java.util.concurrent.Future
  • java.util.concurrent.CompletableFuture
  • org.springframework.util.concurrent.ListenableFuture

并用@Async注释查询方法,例如

公共接口 UserRepo 扩展了 Repository<User,> {  @Async  ListenableFuture findByName(String name);}

但文档清楚地指出,实际[...] query execution will occur in a task that has been submitted to a Spring TaskExecutor.所以它并不是真正的非阻塞,而只是使用不能很好地扩展的线程池解耦我的线程。

因此,我的问题:

如何使用MongoDB异步驱动程序的NIO功能在非阻塞模式下执行查询?

到目前为止,我看到的唯一解决方法是摆脱 Spring 数据并使用 Mongo 异步驱动程序 API 自己实现数据库查询。但希望我只是错过了一些东西,并且有一个向前的答案。;)

从Spring Data Kay M1开始,终于引入了一个响应式API,允许使用ReactiveCrudRepository接口进行非阻塞数据访问。
Spring团队有一篇很好的博客文章。
现在在 Spring 数据文档中也提到了它,但请记住,如果您已经使用 @Async 功能启动了项目,请不要将其与新的反应式 API 混合,因为文档明确指出:"异步查询执行不同于反应式查询执行,不应混合使用。

最新更新