如何在异常情况下使风暴停止?

5us2dqdw  于 2021-06-21  发布在  Storm
关注(0)|答案(2)|浏览(302)

默认情况下,当风暴喷口或螺栓遇到异常时,它将重新启动喷口或螺栓并重试。是否有任何配置选项使其停止拓扑(可能在n次重复尝试之后)(例如,hadoop在放弃之前尝试了4次。)
我的storm拓扑运行了77天,其中一个螺栓在每个元组上引发了一个异常。在这样的情况下,我宁愿失败,这样我就会注意到出了问题。

f45qwnt8

f45qwnt81#

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

3zwjbxry

3zwjbxry2#

没有停止拓扑的选项(当前)。老实说,杀死整个拓扑仅仅因为一个例外就是暴力。
在您的场景中,这些异常应该在应用程序层中处理。
是否有任何配置选项使其停止拓扑(可能在n次重复尝试之后)?
没有现成的解决方案,但您可以做到这一点,并保持跟踪检索元组在喷口。如果满足阈值,则记录元组或将其发送到消息传递队列。
我的storm拓扑运行了77天,其中一个螺栓在每个元组上引发了一个异常。
那你的bolt代码里可能有个bug?
一种策略是将失败的元组发送到消息队列或事件总线(如hornetq、apachekafka、redis),并拥有一个侦听器,这样您将立即收到有毒元组的通知。

相关问题