【发布时间】:2015-08-02 10:45:34
【问题描述】:
这是关于 Google App Engine/Java 的问题。
我正在尝试使用带有事务的异步 API 将任务添加到队列。
这是查看以下问题的最小示例。
https://gist.github.com/hogedigo/4e1943be5a3d3550a6ce
我循环了 10 次并将一个实体保存到数据存储区并将一个任务添加到队列中,但有时某些任务似乎丢失了。
我进行交易并将 tx 传递给 Queue#addTask。 所有实体总是被保存,但有些任务有时会丢失。 恐怕我做交易也没有一致性。
我不调用 addAsync 结果future 的get 方法。 我相信如果我得到未来的结果就可以了,但我不想这样做,因为我需要同时运行事务。
下面的文档说“调用 Transaction.commit() 会阻止所有异步调用的结果,因为事务在提交之前开始。”
https://cloud.google.com/appengine/docs/java/datastore/async#Working_with_Async_Transactions
Transaction.commit 仅阻止数据存储异步调用? 并且不阻塞任务队列异步调用?
【问题讨论】: