Sorm Bolts执行方法工作

时间:2016-07-11 09:04:29

标签: apache-storm

我对Storm Bolt执行方法的理解是 - (假设只有一个任务和三个元组)

  1. 通过第一个元组调用bolt的执行方法
  2. 一旦方法完成并返回螺栓的Execute方法,则调用传递第二元组等等
  3. 如果第一个元组确认失败,则第一个元组返回队列。处理继续第二和第三元组
  4. 调用execute方法再次传递第一个元组
  5. 我的理解是对的吗?

1 个答案:

答案 0 :(得分:1)

基本上是的。

但是,如果第一个元组失败,则不会“重新回到队列”,但会执行对Spout.fail(Object msgId)的回调(对于第一个元组的所有“父元组”。此时,Spout将会重新发出所有父元组。因此,元组将被传递给execute()时的确切顺序是不可预测的。

当然,您的Spout必须是所谓的可靠Spout,即必须可靠地存储所有数据,以便它可以重新发出所有失败的元组。许多提供的Spouts是可靠的。

有关详细信息,请查看Storm文档:https://storm.apache.org/releases/1.0.1/Guaranteeing-message-processing.html