我对事务排队任务如何工作以及何时执行有一些疑问。
假设我按此顺序在事务中有一些操作:
1]如果写入实体操作之一失败,则整个事务失败。这是否意味着即使在第4步失败,也不会排队入工作?
2)如果所有写操作成功,什么时候将其添加到队列?作为最后一步?还是按照出现的顺序?
3)如果向队列添加工作失败,整个事务是否失败并且所有写操作都回滚了怎么办?
1)是,如果事务回滚,则不会排队任何工作。
2)工作作为事务提交的一部分添加到队列中。在执行时,可以保证排队的工作可以看到事务后状态的数据(当然,除非对其进行了其他修改)。
3)如果将工作添加到队列失败(并且您没有捕获到异常),则异常将传播并导致事务回滚。