关于objectify的事务入队任务的问题
Questions about objectify's transactionally enqueued tasks
我对事务入队任务的工作方式和执行时间有一些疑问。
假设我在一个交易中按以下顺序进行一些操作:
- 写实体
- 写另一个实体
- 将工作添加到事务中的队列
- 写另一个实体
1) 如果其中一个写入实体操作失败,则整个事务失败。这是否意味着即使在第 4 步失败也不会排队?
2) 如果所有写操作都成功,工作什么时候加入队列?作为最后一步?或者只是按照它出现的顺序?
3) 如果向队列中添加工作失败,是不是整个事务都失败了,所有的写操作都回滚了?
1) 是的,如果事务回滚,则不会有任何工作入队。
2) 工作作为事务提交的一部分添加到队列中。执行时,排队的工作保证在post-事务状态下看到数据(当然,除非它被另外修改)。
3) 如果向队列添加工作失败(并且您没有捕获异常),异常将向上传播并导致事务回滚。
我对事务入队任务的工作方式和执行时间有一些疑问。
假设我在一个交易中按以下顺序进行一些操作:
- 写实体
- 写另一个实体
- 将工作添加到事务中的队列
- 写另一个实体
1) 如果其中一个写入实体操作失败,则整个事务失败。这是否意味着即使在第 4 步失败也不会排队?
2) 如果所有写操作都成功,工作什么时候加入队列?作为最后一步?或者只是按照它出现的顺序?
3) 如果向队列中添加工作失败,是不是整个事务都失败了,所有的写操作都回滚了?
1) 是的,如果事务回滚,则不会有任何工作入队。
2) 工作作为事务提交的一部分添加到队列中。执行时,排队的工作保证在post-事务状态下看到数据(当然,除非它被另外修改)。
3) 如果向队列添加工作失败(并且您没有捕获异常),异常将向上传播并导致事务回滚。