簡體   English   中英

事件采購和傳奇 - 補償交易

[英]Event-sourcing and sagas - compensating transactions

關於SO的第一個問題(真的???),請跟我一起請:)

我們正在使用事件采購來構建解決方案。 我們的一些業務流程將長期運行,因此我們計划使用sagas將命令編排到多個聚合根

根據我的理解,如果一個saga發出的命令失敗 ,那么saga將負責向所有先前調用的聚合根發出補償命令

如果聚合根的狀態在參與saga 之后在 外部 (即由其他進程/用戶) 發生變異 ,但是 saga失敗並向該聚合根發出補償命令 之前 ,應該采取什么行動呢?

換句話說,如何嘗試補償某個聚合根的事件流中不是最后一個事件的事件(在EventStore語言中說話)?

這是一個相當棘手的情況,因為我看到的是你補償條目可能最終得到無效的AR,使你的補償行動無效。

您可能需要重新查看流程的設計,以便在確定您的流程管理器(saga)能夠完成之后才會對AR進行更改。 也許暫時存儲值以供以后更改。

另一種方法可能是防止AR上的某些命令處於特定狀態,表明它可能導致這些命令出現問題。 然后,用戶將無法發出這些命令。 您的流程經理會處理狀態以及任何州的到期/超時等。

暫無
暫無

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

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