Java: 异步MongoTemplate / MongoOperation

3
有没有一种方法可以异步地将内容插入到mongodb中?
我知道在大多数情况下,mongodb都很快,但是我想也许我可以通过在命令输入后立即返回来节省一些毫秒。
这适用于那些连接到服务器以向mongodb发送插入命令的用例。您希望在命令被发出后立即返回客户端,而不一定等待来自mongodb的响应。
我阅读了文档:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/ 它似乎只能异步读取,而不能异步插入。
1个回答

2

Spring Data MongoDB文档仅展示了在查询方法上使用@Async注解的示例,但实际上可以在每个方法上使用它。

引用该文档:

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

方法的异步调用不是Spring Data的关注点,而是Spring Core的关注点,因此您可以参考Spring框架文档

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

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

如果我使用Spring Boot,如果我只是在方法调用上使用@Async注释,那么这个XML配置是否会自动完成?另外,我发现Async似乎仅适用于自定义方法,而不适用于创建mongotemplate对象的Java驱动程序。顺便说一下,感谢您的答案,非常详细。 - Simon
1
@Simon 是的,你需要这个配置。但是如果你正在使用Java配置,你只需要在你的配置类上加上@EnableAsync注解。请参考这个教程 - Tunaki
好的,谢谢 - 让我测试一下,然后再回复你。 - Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接