DDD sent event後 如何保證event的順序執行

donglangjohn發表於2011-11-27
前一陣子受Speedvan的解惑,明白了不變模式,現在繼續向後方考慮。

Domain的動作產生了事件,事件被sent出到event bus 之類的地方去被持久化,這個順序沒問題吧。

現在假定有一個Domain的兩個事件A1與A2要被持久化,A1在A2之前發生。

譬如:
A1 : 更新person資訊。
A2 : 再次更新person資訊。

這兩個event透過 event bus 被sent到持久端,這個sent很有可能是走網路,那麼如何保證這個兩個event還是按照原來的順序被持久化的呢?

還有一種可能是 雖然是按順序從event bus裡取出,但是server是多CPU的,那麼此時也有可能是這兩個event被兩個cpu同時持久化,這又如何保證其順序是按照事實的發生順序而執行的呢?

以前開發都是跟DB打交道的從而能保證這個順序,因為A1先被持久化了後才是A2。

而現在是 “記憶體”--》 “event bus” --》“持久化”

比較困惑,希望有人來解惑,thanks

相關文章