假設我的拓撲結構是這樣簡單:如何故意拋出RuntimeException?
Spout --> Bolt A --> Bolt B --> Bolt C
和螺栓C存儲在數據存儲中的數據。
無論何時在存儲數據時有一些異常,現在建議拋出一個RuntimeException? 喜歡的東西:
try {
datastoreManager.insert(myData);
} catch (Exception e) {
throw new RuntimeException(e);
}
或者我應該只是拋出一個FailedException,讓拓撲重試元組?
什麼應該是一個好的做法?
我在這裏故意拋出一個RuntimeException沒有看到任何傷害,因爲當發生這種情況時,當前工作線程死亡,並且由於拓撲沒有收到ACK,這個元組將在其他一些worker上重新嘗試,與通過拋出FailedException (除了拓撲上的某些增強負載)相同的總輸出。