Can Storm replay a stream which emitted by a Bolt?
使用storm可靠的spout,可以重放一个处理失败的元组流。据我了解,只能从 spout 重播流。如果该流未能被下一个 Bolt 处理,是否可以重播从 Bolt 发出的流?即如果"Bolt B"由于某种原因不可用,一旦"Bolt B"再次可用,"Bolt A"是否能够重播"Stream 2"?
Storm 不支持此功能。
如果 Bolt B 失败,则只能从 Spout 进行重播。让我们假设 Spout 发出一个元组 t1,由 Bolt A 处理并产生一个输出元组 t2。如果 Bolt B 无法处理 t2,则 Spout 可以重新发出元组 t1,Bolt A 再次处理该元组,从而再次输出元组 t2。
当然,Bolt A 在第二次处理 t1 时必须产生相同的输出元组 t2。此外,改变了处理顺序。 Spout 可以在重新发出 t1 之前发出其他元组,即 Bolt B 在失败后可能会以不同的顺序接收元组(当 Bolt B 恢复时,t2 很可能不是第一个元组)。