2015-11-01 151 views
2

有没有办法将某些东西异步插入到mongodb中?Java:异步MongoTemplate/MongoOperation

我知道mongodb在大多数情况下是相当快的,但是想一下,只要给出命令,我可以通过返回来节省一些毫秒。

这是用于连接到服务器以发送mongodb命令来插入内容的用例。一旦命令发出,您想要返回客户端,而不一定等待来自mongodb的响应。

我阅读文档:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/

似乎只异步读取,不能异步地插入。

回答

2

Spring Data MongoDB documentation仅显示在查询方法上使用@Async注释的示例,但可以在每种方法上使用它。

引用本文档:

信息库中查询可以异步使用Spring的异步方法执行能力来执行。这意味着方法将在调用时立即返回,并且实际的查询执行将发生在已提交给Spring TaskExecutor的任务中。

方法的异步调用不是Spring Data关注的问题,而是Spring核心问题,因此您可以参考Spring framework documentation

简单地说,你只需要在你想要的方法上添加@Async注解,并在Spring配置中配置一个合适的任务执行器。示例XML配置是:

<task:annotation-driven executor="myExecutor" /> 
<task:executor id="myExecutor" pool-size="5"/> 
+0

如果我用春天开机,将这个XML配置自动如果我只是使用@Async标注在我的方法调用呢?此外,我看到异步似乎只对自定义方法有效,而不是用于创建mongotemplate对象的mongo的java驱动程序。谢谢你的答复,这是非常详细的。 – Simon

+1

@Simon是的,你需要这种配置。但是,如果您使用的是Java配置,则只需在配置类中使用'@ EnableAsync'注释。看看[本教程](https://spring.io/guides/gs/async-method/)。 – Tunaki

+0

好的,谢谢 - 让我测试一下,并会回复你。 – Simon