【问题标题】:Is it possible to implement a timer in a Apache Storm bolt?是否可以在 apache Storm bolt 中实现计时器?
【发布时间】:2022-10-06 18:34:10
【问题描述】:

当数据到达(输入元组)时触发 Bolt 的代码。即使在缺少输入数据的情况下,我们如何在 Bolt 中编写代码以运行?我的意思是,如果没有元组到达,我们如何强制完成一个动作?是否允许使用计时器?

    标签: timer missing-data apache-storm


    【解决方案1】:

    螺栓的主要例程在execute-Function 内,如文档here 所述。据我所知,当一个新的元组到达时,底层的supervisor 会自动调用它,如果不分叉 Storm,这是你无法轻易改变的。但是,如果您想在螺栓中有一个正在进行的例程,那么您可以在构造函数中启动一个并行线程。

    【讨论】:

      【解决方案2】:

      是的,您绝对可以使用计时器来触发逻辑以作为螺栓的一部分运行,并使用螺栓的 OutputCollector 进行发射。我过去在生产中这样做过。你需要使用 Storm 的 IRichBolt 接口来允许额外的线程发出元组。

      Storm 中另一个方便的选项是刻度元组。这些是您配置 Storm 以在给定时间间隔发送螺栓的元组。这些通常比使用计时器更有用,因为它们不需要额外的线程,因此当您的流受到背压时表现得更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多