簡體   English   中英

如何管理業務交易

[英]How to manage business transactions

由於交易不完整,我的代碼中發生了一些虛假的活動,我不確定該怎么辦。

例如,如果我有:

User user = new User();
userService.save(user);
Email email = new Email(user, "Welcome!");
emailService.send(email);

並且服務器在保存user后死亡,但無法發送電子郵件,那么我該如何還原交易?

此外,為了使事情變得更加復雜,我們先發送電子郵件,然后再保留用戶,然后發送電子郵件,但用戶並沒有保留。 由於該交易不可能撤消,因此必須有一種方法來管理所有“假設”情況。

問題是它不一定只與電子郵件有關,它可以是任何東西-電子郵件,短信,銀行交易,Web服務調用,數據庫過程調用等。

Java是否有管理此類問題的方法? 我知道這可以看作是一個開放性問題,但是問題是我實際上並不知道從哪里開始學習此問題。

我可能會為要發送的電子郵件創建一個單獨的表,然后讓Quartz或其他任務計划程序來發送電子郵件。

在這種情況下,您將同時插入用戶表和電子郵件表。 檢查一下: MySQL插入多個表? (數據庫規范化?)

因此,當您提交用戶時,電子郵件將同時提交,否則它們都會失敗。

然后,您的調度程序可以每隔xx分鍾查看一次電子郵件表,並軟/硬刪除成功發送的電子郵件。 如果您軟刪除它們,您還將獲得發送電子郵件的歷史記錄。 對電子郵件使用調度程序的這種方法對我也很有意義,因為發送電子郵件需要互聯網連接,這與在數據庫上創建用戶不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM