风暴重播元组哪个处理已超时?

在风暴文档中提到,风暴重放了处理已经超时的元组。 我的问题是风暴是否自动执行此操作(不调用原始spout上的fail())或者是原始spout的重要责任是重放元组(调用fail()并且重放应该在内部实现,甚至在外部实现)?

为了在超时时进行适当的重放,必须在从spout发出元组时使用id锚定元组。 发生超时时,无论您用作锚点的是什么,都会返回到fail方法(fail(object anchorId))。 现在,您可以使用failed / timedout元组的anchorId进行重放,或使用超时元组执行的任何其他操作。 每个锚ID必须是唯一的。 锚id的示例是数据库id。 当元组失败时,您可以使用数据库ID重新创建元组并重新发出它。 因此,要回答您的问题,您必须在失败中使用重播逻辑,并且可以使用anchorId重新创建元组。 希望此信息有所帮助

来自http://storm.apache.org/documentation/Guaranteeing-message-processing.html ,

如果元组超时Storm将调用Spout上的fail方法

所以是的, fail将被召唤。