java - 关于 objectify 的事务入队任务的问题
问题描述
我对事务入队的任务如何工作以及何时执行有一些疑问。
假设我按以下顺序在事务中有一些操作:
- 写一个实体
- 写另一个实体
- 将工作添加到事务中的队列
- 再写一个实体
1)如果其中一个写实体操作失败,则整个事务失败。这是否意味着即使在第 4 步失败,也不会将任何工作排入队列?
2)如果所有的写操作都成功,什么时候将工作添加到队列中?作为最后一步?或者只是按照它出现的顺序?
3)如果向队列添加工作失败,整个事务是否失败并且所有写操作都回滚?
解决方案
1) 是的,如果事务回滚,则不会将任何工作排入队列。
2) 工作作为事务提交的一部分添加到队列中。执行时,保证排队的工作可以看到处于事务后状态的数据(当然,除非它被修改过)。
3) 如果向队列添加工作失败(并且您没有捕获异常),异常将向上传播并导致事务回滚。
推荐阅读
- python - 获取权限注释为布尔值的用户列表
- flutter - 加载图像数量时,低性能设备上的应用程序崩溃
- amazon-web-services - 将域转发到 Route 53 中的另一个域
- sql - SQL将行变成雪花中的列
- python - 熊猫数据框滚动连续计数
- java - 从控制台输出到 JavaFX TextArea 的 UTF-8 编码
- google-cloud-platform - 如何使用 CLI 将静态外部 IP 地址附加到谷歌云计算实例
- go - 如何处理 GORM 提交/回滚错误
- asp.net-core - 如何修复来自 HTTP Post 方法的验证错误
- ruby-on-rails - 如何获取rails上的参数总数