java - 异步写入 GAE 数据存储

标签 java google-app-engine asynchronous

在我的 Java 应用程序中,有时我的用户执行一些需要数据存储写入的工作,但我不想让用户在数据存储写入时等待。我想在数据存储在后台时立即向用户返回响应。

很明显,我可以通过使用 GAE 任务队列来完成此操作,将任务排入队列来存储数据。但我也看到有一个异步数据存储 API,这似乎比处理任务队列容易得多。

我可以只调用 AsyncDatastoreService.put() 然后从我的 servlet 返回吗?该 API 会存储我的数据而不让我的用户等待吗?

最佳答案

我认为你是对的,异步调用看起来更容易。然而,docs对于 AsyncDatastore,请提及您应该考虑的一个警告:

Note: Exceptions are not thrown until you call the get() method. Calling this method allows you to verify that the asynchronous operation succeeded.

该注释中的“get”是在异步调用返回的 Future 对象上调用的。如果您只是从 servlet 返回而不调用 Future 对象的 get,您可能不确定 put() 是否有效。

使用排队任务,您可以更明确地处理错误情况,或者仅依赖自动重试。如果您想要排队的只是数据存储区放入,您应该能够创建(或找到)一个为您完成大部分工作的实用程序类。

关于java - 异步写入 GAE 数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503587/

相关文章:

java - App Engine Memcache 在所有实例之间共享单个值

java - Google App Engine JPA 2.0 - java.lang.ClassNotFoundException : javax. persistence.spi.ProviderUtil

google-app-engine - ERROR : (gcloud. beta.app.deploy) 错误响应:[13] App Engine Flex 配置资源失败

ruby-on-rails - Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

java - 在JavaFX应用程序上运行Proguard后出现NoClassDefFoundError

java - 使用 iTextPDF 修剪页面的空白

javascript - 如何在 node.js 中执行此 curl 操作

java - AndroidAsyncHttp 错误

java - 实体的流动性是什么意思?

java - 本地主机拒绝来自应用程序的连接