如何在Apache Storm拓扑中运行定期任务?

时间:2018-06-27 23:27:29

标签: scheduled-tasks apache-storm

我有一个Apache Storm拓扑,并且希望每隔一段时间执行一次特定的操作。我不确定如何以一种自然而优雅的方式来解决这个问题。

使用BoltSpout还是ScheduledExecutorService,还是其他?

2 个答案:

答案 0 :(得分:2)

Tick元组是不错的选择https://kitmenke.com/blog/2014/08/04/tick-tuples-within-storm/

编辑:这是螺栓的基本代码

@Override
public Map<String, Object> getComponentConfiguration() {
    // configure how often a tick tuple will be sent to our bolt
    Config conf = new Config();
    conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 300);
    return conf;
}

然后,您可以使用TupleUtils.isTick(tuple)中的execute来检查接收到的元组是否是刻度元组。

答案 1 :(得分:0)

我不知道这是否是正确的方法,但它似乎运行良好: 在prepare的{​​{1}}方法的结尾,我向Bolt添加了一个调用,其中包含以下代码:

intiScheduler()

但是请谨慎使用,因为根据设置,螺栓可能具有多个实例。