試想3分系統組成: 1.外部電子商務網站的服務來處理信用卡交易 2.本地數據庫來存儲處理結果 3.本地UI(或服務取勝)執行的支付處理客戶訂單文件架構穩健的支付處理
外部網絡服務顯然不是事務性的,所以如何保證: 1.即使數據庫在當時不可訪問,網絡服務接收到的結果最終仍會保留到數據庫中(網絡問題,數據庫超時) 2.防止客戶在客戶訂單處理客戶訂單時由其他客戶發起付款,但結果不符合essfully堅持數據庫(並在等待某種恢復隊列)
其目的是做處理非事務性系統組件,並保證交易將不會由其他進程在失敗的情況下重複。
(請看看它在後賣出支付處理,其中多個運營商可能會嘗試手動付款處理的情況下,不是web結賬應用程序)
這或多或少是我用MSMQ完成的,只是想看看其他人如何解決問題。我也檢查NServiceBus,這給了我一些額外的觀點。謝謝。 – Tomek 2010-10-16 15:58:18