簡體   English   中英

使用Sagas具有可恢復性

[英]Using Sagas with Recoverabilty

對於來自Sagas的郵件的恢復,我們遇到了問題。

當Saga發送消息進行處理時,消息處理程序有時會因異常而失敗。 當前,我們使用try / catch,並且在引發異常時,我們會向Saga發送失敗消息以進行“回復”。 這種方法的問題在於,由於我們正在處理消息處理程序中的錯誤,因此不會發生可恢復性重試。

我的想法是向管道中添加自定義邏輯,並且如果Command消息實現了某些特殊的接口,則如果發生異常(重試失敗后),則自定義邏輯將向Saga發送失敗的消息響應,但是我不確定插入允許重試失敗后發送消息的管道。

這是有效的方法嗎? 如果沒有,在重試后如何解決Saga到Handler的失敗消息?

您可以使用立即分派來不等待處理程序完成。

但是,我想提出一種替代方法。 為什么不在傳奇中創建超時? 如果在一定的時間跨度內未收到來自處理程序處理者的答復,則采取其他方法。 處理程序將獲得5分鍾的時間,如果5分鍾內沒有響應,我們將執行其他操作。 如果它在6分鍾后仍然響應,我們知道我們已經采用了備用路徑(使用布爾標志或將其存儲在saga數據中),並擱置了來不及的答復。

如果您想以此為基礎進行討論,請查看我們的社區平台

暫無
暫無

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

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