我在业务层中有一个代码,可以更新数据库以及Rest服务中的数据。
问题是,如果不失败,则必须将数据保存在两个地方,另一方面,如果失败,则必须在数据库中回滚并发送另一个请购单以保存api。
因此,我正在寻找一种使用EJB的事务管理来协调对api的调用的方法。在提交时,将设置的请求发送到api,在回滚时,将删除的请求发送到api。
事实上,我需要保持一致性并使两个地方保持同步。
我已经阅读了有关UserTransactions和Managedbeans的信息,但是我不知道这样做的最佳方法是什么。
答案 0 :(得分:0)
您可以使用常规的分布式事务,具体取决于您的基础结构和参与者。这可能是可能的,例如如果所有参与者都是EJB,并且数据存储库能够处理分布式事务。
这不适用于松散耦合的组件,并且您的设置如下所示。
我不建议您创建自己的分布式事务协议。关于边缘情况和边缘情况,最终可能不会获得一致的数据。
我建议考虑使用事件源,并最终为此类事情提供一致性。例如,您可以发出用于写入数据的事件(命令)。如果需要“回滚”,则可以发出事件(命令)以删除之前写入的日期。处理所有事件后,数据是一致的。
一些有趣的链接可能是: