在 Storm 中取消锚定元组
Un-anchoring tuples in Storm
我有一个主要是线性的 Storm 拓扑。中间有一个螺栓正在做可能需要时间的工作。一些元组可能会立即得到处理,而另一些元组会被螺栓隐藏在某个地方以备后用。 (尽量不要过多地敲打外部资源。)
在这之前我一直在使用 BaseBasicBolt
派生的螺栓,它是 BaseRichBolt
的子类。所以它接收到的元组正确地锚定到整棵树,直到喷口。
我可以确认这些元组并从我的螺栓中发出全新的、未锚定的元组吗?如果这个之后的螺栓(再次全部 BaseBasicBolts
)发出锚定的元组,重放是否会正常工作以及如何?
是的,您可以发出未锚定的元组。但是,无法恢复这些元组。
如果您使用特殊的 bolt acks 元组,spout 将丢弃重新计算此输入元组所需的源元组。因此,您无法再恢复此输入元组,因此您无法重新计算未锚定的结果元组。
恕我直言,在你的情况下获得容错的唯一方法是增加消息超时,这样你的特殊螺栓中的长处理元组就不会超时。您发出的元组需要定期锚定到隐藏的输入元组,并且当您将它们从隐藏中删除时,可以确认这些输入元组 space.
我有一个主要是线性的 Storm 拓扑。中间有一个螺栓正在做可能需要时间的工作。一些元组可能会立即得到处理,而另一些元组会被螺栓隐藏在某个地方以备后用。 (尽量不要过多地敲打外部资源。)
在这之前我一直在使用 BaseBasicBolt
派生的螺栓,它是 BaseRichBolt
的子类。所以它接收到的元组正确地锚定到整棵树,直到喷口。
我可以确认这些元组并从我的螺栓中发出全新的、未锚定的元组吗?如果这个之后的螺栓(再次全部 BaseBasicBolts
)发出锚定的元组,重放是否会正常工作以及如何?
是的,您可以发出未锚定的元组。但是,无法恢复这些元组。
如果您使用特殊的 bolt acks 元组,spout 将丢弃重新计算此输入元组所需的源元组。因此,您无法再恢复此输入元组,因此您无法重新计算未锚定的结果元组。
恕我直言,在你的情况下获得容错的唯一方法是增加消息超时,这样你的特殊螺栓中的长处理元组就不会超时。您发出的元组需要定期锚定到隐藏的输入元组,并且当您将它们从隐藏中删除时,可以确认这些输入元组 space.