在特定的持续时间内禁用喷口

时间:2016-02-15 05:45:22

标签: apache-storm

我们要求每天禁用特定间隔(晚上9点到9点)的喷口。目前我们已经在Spout中编写了代码,用于检查当前时间是否在该持续时间内,如果是,则不执行任何操作,但此方法会连续调用下一个元组方法。有没有更好的方法来做同样的事情(使用配置等)?

2 个答案:

答案 0 :(得分:1)

没有更好的方法。即使一次又一次地调用Spout,如果在next()呼叫上没有输出任何输出,Storm将应用睡眠惩罚,因此,一个忙碌的等待情况"避免了。

如果您希望改善等待惩罚,您可以实施自己的ISpoutWaitStrategy并通过参数topology.spout.wait.strategy注册拓扑(请参阅default.yaml)。

答案 1 :(得分:0)

Matthias的建议,将会奏效。或者,您也可以考虑在此期间停用拓扑。 Nimbus客户端可用于以编程方式停用拓扑。如果拓扑被停用,则不会在spout上调用nextTuple。但是,它会关闭您可能不需要的所有拓扑的喷口。