在以下情况下我需要一些帮助:想象一个Job
具有progress
属性的实体层次结构。一些作业由多个子作业组成,形成一个作业树。这些复合作业的进度是根据它们的子作业计算的。底部作业进度会定期更新,然后自下而上重新计算整个树的进度。作业进度通过收到的 JMS 消息进行更新。在这种情况下,作业是通过 JPA 从数据库中获取的,并且会修改进度并开始递归重新计算。
如果它在集群中运行,我应该如何处理锁定?我想避免两个子作业从 0% 更新到 100% 并且父作业变为 50% 而不是 100% 的情况,因为两个更新都看到 0%、100%,反之亦然。
我的第一个想法是在作业对象上使用同步。但这不行,因为多个运行时对象可能代表数据库中的同一条记录。
你能给我一个好的、有效的方法来处理这种情况吗?