0
按照我的理解ack
,fail
和nextTuple
功能都是使用緊密循環作爲ISpout的Javadoc同一線程調用提示:阿帕奇風暴:限制所產生的元組數(在一定的時間框架)
nextTuple ,ack和失敗都會在噴口任務中的單個 線程中緊密循環中調用。
假設我們有一個合成的元組生成器,並且我們想限制每秒噴出的元組數。這怎麼能實現?睡覺()是個好主意嗎?有其他方法嗎?
按照我的理解ack
,fail
和nextTuple
功能都是使用緊密循環作爲ISpout的Javadoc同一線程調用提示:阿帕奇風暴:限制所產生的元組數(在一定的時間框架)
nextTuple ,ack和失敗都會在噴口任務中的單個 線程中緊密循環中調用。
假設我們有一個合成的元組生成器,並且我們想限制每秒噴出的元組數。這怎麼能實現?睡覺()是個好主意嗎?有其他方法嗎?
睡眠可能不是最好的主意,因爲它會阻止噴嘴處理傳入的數據。看到這裏:Why should I not loop or block in Spout.nextTuple()
我只是計數發射的元組,並記住一個時間戳。如果每個時間單位的元組數量超過了,並且時間單位沒有通過,只需從nextTuple()
返回而不發射任何元組。當時間單位通過時,將計數器重置爲零,按時間單位推進時間戳,然後重新開始發射。第四。
是的,這是我認爲這不是一個好主意睡覺。感謝您的建議:) –
只是擴展我的答案。 –