风暴喷口周期性逻辑

时间:2018-05-18 01:25:29

标签: apache-storm

我想在Storm spout的缓存中刷新状态。我能够成功地使用Tick元组的螺栓。很高兴知道是否有类似的模式可供使用或以其他方式定期唤醒并做某事。我可能有一个计时器来做到这一点。这会导致Storm框架出现任何并发问题吗?

1 个答案:

答案 0 :(得分:0)

我不相信内置任何内容,但请看看我们如何在Kafka spout https://github.com/apache/storm/blob/fbeafdcbb1e4be1263b91be7ba75a15aa6e885a8/external/storm-kafka-client/src/main/java/org/apache/storm/kafka/spout/KafkaSpout.java#L278中提交。

基本上我们在提交时设置时间戳,并检查调用nextTuple时的时间戳。如果时间戳在过去足够远,我们提交并重置时间戳。

这样做意味着您不必担心并发性。 Storm会从同一个线程调用spout上的所有方法。

如果您决定使用Timer或类似程序,则需要确保您的缓存在Timer线程和常规Storm执行程序线程之间同步。