这是关于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只阻止数据存储异步调用? 并且不会阻止taskqueue异步调用吗?
答案 0 :(得分:0)
addAsync()
返回Future<TaskHandle>
。在你的位置,我会尝试将未来添加到futures
。这至少应该揭示隐藏的ExecutionException
。