假设我的拓扑结构是这样简单:如何故意抛出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 (除了拓扑上的某些增强负载)相同的总输出。