【发布时间】:2014-02-10 22:16:37
【问题描述】:
我想知道 Storm Spout 上的各种方法何时被调用。
我查看了ISpout javadoc,这给了我以下心智模型:
"instantiated" -- open(...) -----> "activated"
"activated" -- deactivate() --> "deactivated"
"deactivated" -- activate() ----> "activated"
"activated" -- close() -------> "shutdown"
"deactivated" -- close() -------> "shutdown"
但我不确定何时调用 IComponent.declareOutputFields(...)。在open(...) 之前还是之后?什么时候需要声明输出流和字段?在declareOutputFields(...) 内?或者可以保留对OutputFieldsDeclarer 的引用并稍后定义它们?如果是这样,它可以在单独的线程上吗?
我发现了这个相关问题 (Testing Storm Bolts and Spouts),但答案似乎没有指向任何设计原则或规范。
【问题讨论】: