我們有一個可以保存數據庫的應用程序。如果保存失敗,有沒有辦法重試失敗的螺栓?我們不想一直倒退到噴口。有沒有辦法在風暴中重試螺栓?
2
A
回答
1
在Storm中沒有對此的內建支持。但是,你可以編寫你自己的解決方案:
- 不要ACK(或失敗)的失敗元組,緩衝它在內部數據結構(即,成員變量;也許
List
),並從 返回
- 繼續處理中的更多元組,直到您想要重試(可能是某個計時器,即您可能想要獲取當前時間戳或基於重試計數器)。
- 重試之前,在處理新的輸入元組之前,從緩衝區接收失敗的元組並嘗試插入到DB中。如果再次失敗,請再次插入緩衝區。如果插入成功,則確認緩衝元組並恢復處理當前輸入元組。
你只需要考慮Storm的MESSAGE_TIMEOUT
。重試時間不能超過此值,因爲如果元組在超時值內未得到響應,Storm會自動在源處失敗元組。
2
您可以將輸出「scorpion tail」流添加到螺栓。流將被任何螺栓開始重試過程讀取。這將在拓撲中創建一個循環。這個想法是,當發生故障時,您可以向該流寫入一個信息包,並將元組傳送到上游螺栓,以開始重試。數據包包含重試所需的任何狀態。
相關問題
- 1. 在風暴螺栓緩存
- 2. 風暴螺栓重新加載屬性
- 3. 控制風暴中螺栓的分佈?
- 4. 風暴螺栓中的任務變量
- 5. 風暴KafkaSpout失敗,當螺栓很慢
- 6. 從風暴螺栓插入HBase
- 7. 2噴出一個風暴螺栓
- 8. 風暴拓撲:正確的方法ACK當兩個螺栓有相同的源螺栓
- 9. 阿帕奇風暴螺栓螺栓消息停止或者片狀
- 10. 螺栓接收風暴拓撲的重複結果
- 11. 在風暴正在運行的拓撲中添加螺栓
- 12. Twitter風暴,爲什麼螺栓沒有收到噴口發送的東西
- 13. 在風暴螺栓中輪詢和觸發任務
- 14. 在瀏覽器中顯示風暴羣集的螺栓結果
- 15. 螺栓執行()方法內的風暴計算時間
- 16. 在風暴螺栓中:如何在一個螺栓任務中執行一行代碼
- 17. 阿帕奇風暴中的螺栓容量超過1
- 18. 從風暴螺栓登錄 - 它在哪裏?
- 19. apache風暴如何創建它的螺栓實現
- 20. Apache風暴從python螺栓調用函數
- 21. 阿帕奇風暴螺栓從不同的噴口/螺栓接收多個輸入元組
- 22. 阿帕奇風暴螺栓任務在一段時間後沒有收到消息
- 23. 噴口和螺栓信息時,風暴罐子使用靈氣客戶端部署在風暴UI失蹤
- 24. 螺栓重複路線
- 25. 暴風雨 - 類演員異常使用下一個螺栓中的參數
- 26. 如何知道哪個服務器風暴/螺栓正在運行
- 27. 有沒有人實際使用流程圖的螺母和螺栓代碼了?
- 28. 有沒有辦法在python中重載+ =?
- 29. 上螺栓
- 30. 是否有任何可視化工具可以查看風暴集羣中的加工鏈(螺栓和噴口)?
這個答案。 +如果您注意到元組來自「scorpion tail」流,則重試策略應該不同(例如更長的超時)。 –