2016-10-16 29 views
0

在編程web應用程序時,特別是Django,有時我們有一系列必須全部成功或全部失敗的操作(以確保某些可預測的狀態分類)。顯然,當我們使用數據庫時,我們可以使用事務。在異常情況下確保「事務性過程」的正確工作流程

但在某些情況下,需要一個數據庫上下文之外,這些(全有或全無)限制

(例如,如果支付是成功的,我們必須把產品的激活碼,否則風險客戶投訴等)

但可以說,在一些重大的一天,send_code()功能只是失敗一次又一次由於一些臨時的網絡錯誤(即持續1小時以上)

我在錯誤日誌,並手動解決問題,例如手動發送郵件

我應該設置某種工作隊列嗎?當事情失敗時,他們只是回到隊列末尾以備將來重試?

如果日誌/排隊系統也失敗會怎麼樣? (我現在擔心得太多了嗎?)

回答

1

我們在我們公司使用微服務,至少每月一次,我們有一段微服務暫時停止。我們有支付流程的Transaction模型,以及在我們向用戶發送產品之前的每個步驟的狀態。如果出現問題或者其中一個關聯的微服務發生故障,我們將其標記爲status=error並保存到數據庫。然後我們使用cron作業來查找和完成這些過程。您需要嘗試一些東西,如果不適合您的需求,請嘗試其他方法。

相關問題