码迷,mamicode.com
首页 > 其他好文 > 详细

storm ISpout

时间:2015-07-21 17:24:02      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

ISpout定义了 7个方法:
1、 open(Map conf, TopologyContext context, SpoutOutputCollector collector);  
     初始化时被调用,提供spout运行环境
      @param conf 对spout的配置
      @param context 可以获得任务的信息,如task id,component id输入输出信息等
      @param collector 可以发送tuple。Tuples 可以在任何时间被发送,包括 open 和 close 方法,collector 是线程安全的并且会保存    这个spout对象的实例
    
2、close(); 
    Spout被shutdown时调用,不能保证一定被调用,因为可能会 kill -9 这个worker。

3、activate(); 
    当spout 从未激活状态激活时调用,接下来会调用nextTuple方法。被激活后的 spout 也可以使之失效
   
4、deactivate();   
    spout 失效时被调用

5、nextTuple(); 
       当storm 需要 spout 发射 tuple时调用。 方法非阻塞,因此当没有tuple要发射时,方法会直接返回。
       而spout任务,又会循环调用 nextTuple, ack, 及 fail 方法,所以为了不浪费CUP,当没有tuple发射时,
       尽量让nextTupe停一小会(比如一毫秒)

6、ack(Object msgId); 
    当 tuple 完全处理结束调用。 典型的应用就是,把消息从队列删除,避免重播

7、 fail(Object msgId);       
    当 tuple 处理失败时调用,典型应用就是把消息再放回队列稍后重播

storm ISpout

标签:

原文地址:http://my.oschina.net/u/1421929/blog/481447

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!