如何让风暴在例外情况下停止



默认情况下,当Storm spout或bolt遇到异常时,它会重启spout或bolt并再次尝试。是否有任何配置选项可以使它停止拓扑,也许在N次重复尝试之后?(例如,Hadoop尝试了4次才放弃)

我有一个Storm拓扑运行了77天,一个螺栓在每个元组上引发异常。在这种情况下,我宁愿它失败,这样我就会注意到出错了。

目前没有停止拓扑的选项。老实说,仅仅因为一个异常就破坏了整个拓扑结构。

在您的场景中,这些异常应该在应用层处理。

是否有任何配置选项可以使它停止拓扑,也许在N次重复尝试之后?

没有现成的解决方案,但你可以这样做,并在Spout中跟踪重试的元组。如果满足阈值,则记录元组或将其发送到消息传递队列。

我让Storm拓扑运行了77天,每个元组都有一个螺栓引发异常。

那么也许你的螺栓的代码有错误?

一种策略是将失败的元组发送到按摩队列或事件总线(如HornetQ, Apache Kafka, Redis),并有一个侦听器,这样你就会立即收到关于有毒元组的通知。

据我所知,Storm不会重试一个元组(它自己导致了一个异常)。默认情况下,它将继续处理下一个元组。相同的元组不会被重新尝试,除非Spout实现了一个fail方法。

相关内容

  • 没有找到相关文章

最新更新