关于对象化的事务排队任务的问题

问题描述 投票:0回答:1

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

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

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

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

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

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

java google-cloud-datastore objectify
1个回答
1
投票

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

2)工作作为事务提交的一部分添加到队列中。在执行时,可以保证排队的工作可以看到事务后状态的数据(当然,除非对其进行了其他修改)。

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

© www.soinside.com 2019 - 2024. All rights reserved.