2015-08-16 71 views
1

我在Linux Ubuntu中部署了nodejs-> kafka> storm-> Mongo。一切本來就是正常的。然後我改變了風暴工作者的方法,這使得風暴工作者的過程信息非常緩慢,每條信息大約1分鐘,我注意到風暴一再發送信息。我恢復到原來的方法,一切都很好。 (原始方法處理時間是每條消息90ms)。apache風暴可靠性超時配置

我想這是風暴的可靠性進入球員。當消息未被確認或超時時,它再次發送消息。

如果我的猜測是正確的,如何配置這個超時?

如果我的猜測是錯誤的,爲什麼同樣的消息被髮送兩次或三次?

回答

3

您可以通過配置參數Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS來設置超時時間。見https://storm.apache.org/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_MESSAGE_TIMEOUT_SECS

默認值是30秒,見defaults.yaml這裏:https://github.com/apache/storm/blob/master/conf/defaults.yaml

# maximum amount of time a message has to complete before it's considered failed 
topology.message.timeout.secs: 30 

當一個元組失敗,它應在風暴UI顯示出來,並應該被記錄下來,太(也許你需要調整日誌水平)。所以你可以仔細檢查一個元組是否超時。

+0

非常感謝,馬提亞斯。那麼這個配置參數的默認值(TOPOLOGY_MESSAGE_TIMEOUT_SECS)呢?我完全沒有設置它,因爲我根本不知道這個參數。 – user84592

+1

查看更新的答案。 –

+0

@ MatthiasJ.Sax由於某些原因,儘管設置了此字段,並且儘管顯示在UI中:topology.enable.message.timeouts \t = false,應用程序仍然超時。我使用0.10.0。你會不會對這個問題有所瞭解? – Tanvi