首页 > 解决方案 > 关于 objectify 的事务入队任务的问题

问题描述

我对事务入队的任务如何工作以及何时执行有一些疑问。

假设我按以下顺序在事务中有一些操作:

  1. 写一个实体
  2. 写另一个实体
  3. 将工作添加到事务中的队列
  4. 再写一个实体

1)如果其中一个写实体操作失败,则整个事务失败。这是否意味着即使在第 4 步失败,也不会将任何工作排入队列?

2)如果所有的写操作都成功,什么时候将工作添加到队列中?作为最后一步?或者只是按照它出现的顺序?

3)如果向队列添加工作失败,整个事务是否失败并且所有写操作都回滚?

标签: javagoogle-cloud-datastoreobjectify

解决方案


1) 是的,如果事务回滚,则不会将任何工作排入队列。

2) 工作作为事务提交的一部分添加到队列中。执行时,保证排队的工作可以看到处于事务后状态的数据(当然,除非它被修改过)。

3) 如果向队列添加工作失败(并且您没有捕获异常),异常将向上传播并导致事务回滚。


推荐阅读