java—如何在终止storm拓扑之前调用特定方法

holgip5t  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(632)

如何在杀死storm拓扑之前调用特定方法。
我在storm中创建了一个拓扑,我想在拓扑被杀死之前调用特定的方法。
在storm框架中是否有任何预定义的重写或可用的方法来执行此操作。
提前感谢:)

cmssoen2

cmssoen21#

没有这回事。。。
作为解决方法,您可以 deactivate 在杀死它之前先检查拓扑结构。这确保了 Spout.deactivate() 被称为。
如果需要在bolts处调用方法,请使用 Spout.deactivate() 通过整个拓扑发送“通知元组”(不包含要处理的数据)。在每个bolt中,如果收到“通知元组”,则调用您的特殊方法。
此外,这个“通知元组”必须由bolt转发给它的所有前辈。您需要确保“通知元组”被发送到每个bolt的所有并行执行器。为此,使用专用的“通知流”并通过 allGrouping() 到这个蒸汽(除了常规的输入流)。在每个bolt中,您需要检查元组是否是通知元组(例如通过 Tuple.getSourceStreamId() )
清理完成后,最终可以终止拓扑。

相关问题