Dealing with Errors
假設過去有一個 Event 的內容發生問題, 該如何處理呢? 千萬不可以直接 update event store, 畢竟 event store 為 Single Source of Truth , 既然是事實怎麼可以修改?
Use Compensation Events
我們透過補償事件來處理錯誤
Partial Compensation
透過 Corrected Event 來修正過去的部分錯誤, 例如我們想把 Euro
文字改成 EUR
:
這個模式時間久了, 在回顧部分 Stream 時不容易的去了解前因後果, 而是必須還要查看完整的 Stream 才知道原因
Full Compensation
透過 Cancelled Event 來完整的取消過去的錯誤, 情境一樣我們只想把 Euro
文字改成 EUR
, 但這次是取消之前的錯誤 event:
這個模式下, 以 Stream 的角度來看是比較明確的且比較清楚的