【发布时间】:2013-05-16 17:50:27
【问题描述】:
在我的Storm 拓扑中,在处理流时,我想将一些消息的处理延迟到未来的某个时间点。这样做有哪些合理的选择?
到目前为止,我想到了以下几点:
- 使用 Java 的
Thread.sleep。 (但是,根据一些讨论,这不是有效利用 Storm 资源的推荐方式。) - 使用延迟队列...
- 尤其是java.util.concurrent.DelayQueue。
- 还有其他值得尝试的实现吗?
- Storm 是否有一些 API 用于延迟我忽略的消息?
- ZeroMQ 是否提供 Storm(如果已修改)可以利用的延迟消息传递 API?
【问题讨论】:
-
您能说明一下您为什么要这样做吗?如果你还没有准备好处理这些东西,你为什么要把它传递给你的风暴拓扑?
-
我的第一反应:为什么要问为什么?理解或回答问题重要吗?延迟(或重新安排)元组有用的原因有很多。我的元组处理不仅仅是纯粹的数据功能转换。就我而言,处理元组涉及捕获系统外部事物的状态并与其他流集成。由于它会随着时间而变化,因此我想以受控的时间间隔捕获该状态。其中一项要求是不要过于频繁地消耗外部资源。
标签: java clojure apache-storm