2013-05-09 31 views
5

它在風暴記錄中提到,風暴重放元組哪些處理已超時。我的問題是風暴是否會自動執行此操作(而不是在原始噴口調用fail()),或者這是原始噴口重播元組的責任(fail()被調用並且應該在內部甚至外部實現重放)?處理超時的風暴重放元組嗎?

回答

6

爲了在超時時重新進行正確的重放,當您從噴口發出時,您必須使用id來固定元組。當超時發生時,無論您用作錨點,都會返回到失敗方法(fail(object anchorId))。現在,您可以使用失敗/超時元組的anchorId進行重播,或使用超時元組執行任何其他操作。每個錨點ID必須是唯一的。錨點ID的示例是數據庫ID。當元組失敗時,可以使用數據庫ID來重新創建元組並重新發射它。因此,要回答您的問題,您必須在失敗中使用重播邏輯,並且可以使用anchorId重新創建元組。希望這個信息有幫助

+0

有什麼辦法可以知道,Spout的fail()方法中哪個螺栓失敗了?基本上,我想在ack()或fail()時發送元組中特定於螺栓的信息。如何做到這一點? – 2016-09-15 05:53:30