天天看點

今天來聊聊事務傳播行為

到底什麼叫事務的傳播行為呢?

俺是個粗人,那麼俺就用最白話的語言來說說俺心目中的事務傳播行為。

事務這個我在此部落格的其他文章中也有專門說過:通俗的了解就是,一個需要做多件事的一個任務。事務是具有原子性,同一個事務中,所有的事情要麼都沒做,要麼都做完了。這樣說就應該了解了事務,那麼事務的傳播行為就可以很好了解了。

用具體的業務場景,我們來講講。比如哈,

老王我準備去逛逛某寶,然後挑了1個足球,2個籃球,3個羽毛球拍(是的,我開文體店的。),都在購物車靜候我統一下單付款了。

但是我精心計算,不行,我支付寶賬戶隻有5塊錢,買這些東西好像不夠(足球單價:2塊,籃球單價:3塊,羽毛球單價:4塊)。

我的媽,我試了一下,我把這3樣東西全部勾上,然後一鍵下單付款的時候,它提示我餘額不足,然後給全部打回來了。。

诶,我就開始思考了,老馬不會做生意啊,我錢不夠,但是又不是沒有錢,我有5塊,按道理來說,你内部其實是一樣商品一樣商品的付款的。我先買了一個足球:2塊,然後扣完,我還剩3元;然後我再買2個籃球:6塊,不夠錢,然後再提示餘額不足就是了嘛。就因為我不夠買全部的,你就一樣都不賣給我了?這還(讓天底下沒有難做的生意?)

那麼站在實際開發的角度,我上述的可以分析一下了

對于商品下單購買這種需求,通常來說,我們都需要對每個環節加上事務控制的,保證交易的正常運作。

對于我一鍵下單,那麼就是向背景送出了一個請求,然後這個請求方法是加上事務控制的,然後在這個事務内部分為

足球扣款、籃球扣款、籃球扣款、羽毛球扣款、羽毛球扣款、羽毛球扣款。那麼這5個步驟都會再細分為5個方法執行流程。那麼5個方法,每個方法也都會有對應的事務控制。控制着,我支付寶賬戶扣款、賣家支付寶賬戶增款等。然後就是考慮事務的控制了。

那麼這個時候,它在籃球扣款任務階段,發現第二個籃球扣款的時候,餘額不足了。那麼就需要事務復原了,第一個籃球扣的款全部撤銷。這個時候有兩種情況了

(1)如果足球扣款、籃球扣款、羽毛球扣款是事務A、那麼如果籃球的每一個扣款也加入了事務A,那麼如果第二個籃球扣款失敗了,發生異常情況,那麼事務A就會復原。進而導緻所有的商品都無法下單成功了。

(2)如果足球扣款、籃球扣款、羽毛球扣款是事務A,那麼如果籃球的每一個扣款事情都自己建立了一個事務B、C、D....。那麼這個時候,事務B成功了,事務C失敗了,并不會影響事務B的成功執行。這個時候就是老馬發現你就5塊錢,就按順序來,賣給你5塊錢最大買到的東西。

那麼肯定還有其他的處理方案。老馬做生意肯定有很多種套路的。

那麼這也是事務的傳播性的一個說法。事務A底下有多個事務,那麼每個事務的都是獨立的,那麼我們再用專業的說法聊聊事務的傳播性行為。

當事務方法被另一個事務方法調用時,必須指定事務應該如何傳播。比如:方法繼續在現有事務中運作,也可能開啟一個新事務,并在自己的事務中運作。

繼續閱讀