我有一個Azure api應用程序(AzureApi1),它具有一個可執行多個http請求的操作。該操作將數據插入到Azure Sql Db的多個表中。在Azure分佈式事務中當一個http調用失敗時,回滾完全操作的最佳方法
然後在相同的代碼中進行外部API調用(ExApi)。使用來自外部調用的結果,它插入/更新一些其他表。這不在Azure中。
然後它調用到另一個API(AzureApi2),它是在相同的資源組作爲第一個中和插入數據到另一個天青SQL數據庫,其也是相同的資源組中使用。
我已經在AzureApi1和AzureApi2中使用了TransactionScope,它們可以單獨爲它們工作。然而,由於有一個外部api介於兩者之間,並且這不在我的控制之內,所以如果發生該api調用的任何故障,我需要回滾完整的操作。目前,第一個API正常回滾,但是,由於第二個API調用是一個不同的http調用,它並不屬於第一個API的事務範圍。 我需要一種方法來回滾第二個Sql Db中的數據以及發生任何失敗。
在這種情況下手動回滾的最佳選擇是什麼?
嗨@amor感謝您的回覆。該解決方案很好,但在時間和資源方面會花費太多。特別是在這種情況下,其中一個http請求輸入依賴於來自其他http響應的結果,我不確定此解決方案是否適用。 –
該解決方案適用於任何一般分佈式事務。分佈式事務需要一個協調器來監視狀態。我們使用分佈式事務的原因是我們希望確保應用程序每個分支的一致性。 – Amor