我有一个用例,其中单个事务包含多个API调用:
invoice
服务:api/invoice/createInvoice
ledger
服务:api/ledger/createJournal
- >使用第1点的发票编号作为参数之一payment
服务:api/payment/disbursePayment
- >使用第1点的发票编号和第2点的GL参考清单这三个操作必须是原子操作,只要其中一个操作失败,就必须取消先前的事务。问题是,因为我使用3种不同的服务,如果它在操作2(ledger/createJournal
)上失败,则操作1(invoice/createInvoice
)已在invoice
服务中标记为成功(因此,{{1数据库)。
如何在API链中处理这种情况?我正在考虑创建invoice
,但这意味着我必须为每次用于原子调用的API调用创建invoice/cancelInvoice
?
谢谢