2012-07-22 66 views
0

我有一個相當概念性的問題,我希望不會被認爲過於籠統或太傻:)如何在基於隊列的系統中處理消費者故障?

在一個數據項需要經過許多步驟(例如應用程序 - 第1步 - 從解析一個CSV文件並生成報告,第2步 - 然後根據上一步生成的報告運行報告等),讓我們假設處理是使用持續隊列實現的,這樣當發現新的原始文件時,消息被放入要求處理所述文件的隊列。處理文件的消費者選擇消息,並將處理結果的另一消息排入下一步處理等。

我的問題是 - 在這個過程中處理失敗的最佳實踐是什麼?假設步驟1中的消費者完全失敗。

在基於隊列的體系結構上實現這種批處理完全是邏輯/高效的嗎?

回答

1

是,隊列都ok,你還需要一個錯誤隊列,你就會把有問題的文件和記錄的消息

需要注意的是徹底的失敗是最簡單的情況下,因爲你可以重新處理整個文件後(如果它是一個暫時的問題)或忽略該文件(如果它是錯誤的)。更嚴重的問題是部分故障,其中一些記錄有問題。

如果一步失敗意味着必須以某種方式撤消其他步驟,則可能需要考慮將其實施爲saga。如果您想要更好地控制流程,您可能需要考慮編排

相關問題