[英]Making a Post request to a REST API from a WCF service in a transaction
我正在做一個 wcf 服務事務的一系列工作。
1.對 rest api 進行 POST 響應。 2.處理 POST req 響應並將其保存在數據庫中。
上面的第 1 步和第 2 步發生在 wcf 事務中,但結果我看到了一個問題,即在出現異常時第 2 步沒有被提交,但第 1 步完成創建不一致。
我已經看到了通過 saga 模式或 2PC 實現這一目標的方法,但找不到任何簡單的實現或解決方法。
PS:我現在不需要回滾數據,只是避免向 REST API 提交請求。 目前我正在通過向 rest api 發出另一個補丁請求來處理這個問題,以恢復在 CATCH BLOCK 中收到的響應。
rest apis沒有2PC。 Rest 根據定義是無狀態的,不包括用於兩階段提交世界的元數據信封,所以你在這里不走運。
另一方面,SOAP 支持WS-Atomic Transaction協議,但我建議您使用 WCF 之類的技術,所有這些都已經實現。 (net core不支持,所以.net框架為此)。
救援的最終一致性。 SAGA 模式是在微服務領域實現這一目標的一種方式。 在最簡單的形式中,最終的一致性可能是微不足道的,如下所示:
Pending
state 中的操作這種方法的缺點是,如果 5 不斷失敗,您需要手動干預。 涉及更復雜的方面(如補償動作),但我將把它留給你進一步研究。
最終一致性沒有開箱即用的實現:(如果您可以將 REST Api 切換到 SOAP 並啟用 WSAT 協議,那么您可以擁有分布式事務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.