我打算使用我的應用程序中描述的here所描述的以隊列爲中心的設計。這基本上包括使用Azure隊列,其中工作請求從UI排隊。工作人員從隊列中讀取,處理並從隊列中刪除消息。以隊列爲中心的工作模式的失敗處理
工作人員完成的'工作'在一個事務中,所以如果工人在完成之前失敗,在重新啓動時它會再次拾取相同的消息(因爲它沒有從隊列中刪除)並嘗試執行操作再次(最多重試的最大數量)
要縮放我可以使用兩種方法:
- 多位工人每一個單獨的隊列。所以如果我有五個工人W1到W5,我有五個隊列Q1到Q5,每個工人知道從哪個隊列讀取,並且故障處理與一個隊列和一個工人的情況相似
- 一個隊列和多個工人 。這裏的失敗/重試處理會涉及更多,最終可能會在消息隊列中使用「隱形」時間,以確保沒有兩名工作人員選擇相同的工作。必須計算不可見時間,以確保其足以完成工作,但又不足以在很長一段時間後執行重試。
想知道第一種方法是否是正確的方法嗎?上述第二種方法處理失敗的強大方法是什麼?