【发布时间】:2015-02-19 16:18:37
【问题描述】:
我有一种将资金转入/转出外部系统的服务方法。
它应该首先在我们的系统中创建一个事务(所以我们有一个 transactionId) 然后我们调用外部系统。 如果外部系统发生故障,我们需要回滚事务,然后在我们的支付审计日志表中写入一条新记录,无论调用失败还是有效。
我不知道在这种情况下如何控制交易。
我了解服务默认是事务性的。
我假设我可以创建 3 个方法(它们现在都是 1 个方法,这不起作用,因为我无法控制提交的内容和回滚的内容)
- createPaymentTransaction()
- sendToPaymentSystem()
- createPaymentRecord()
如果 1 失败,我需要回滚 1,并且什么也不做。 如果 2 失败,我需要回滚 1,但写 3。 如果 1 和 2 有效,我需要写 3。
我不知道如何注释这些,或者如何构造第 4 个请求来管理 3。
【问题讨论】:
标签: grails transactions