Storm之Bolt-接口

9789f05457838374ddb311497a7ab21a3390c0bb


IBolt:  

        bolt接口类,定义了常用的几个接口,IBolt的实现类在client上被创建,然后序列化到拓扑里并被提交到集群的master上,之后nimbus会启动worker进行反序列化,调用prepare进行准备完毕之后就开始处理tuples

        如果是在java里定义bolts ,建议实现IRichBolt.java接口类,IRichBolt.java同时继承了IComponent.java接口,提供了更多对拓扑进行操作的方法。


/**
 * 当集群中的worker初始化一个跟当前Bolt相关的task时候被调用,此方法提供和准备bolt执行时的环境.
 * @param stormConf 此bolt使用的storm配置,合并了本机和集群的配置,将会提供给topology
 * @param context task的上下文,可以获取taskId,componentId,input,output等
 * @param collector 用于任意时刻提交bolt里的tuples,collector是线程安全的,应当保存在Bolt里.
 */
void prepare(Map stormConf, TopologyContext context, OutputCollector collector);
/**
 * 处理单个输入的tuple
 * 这里面使用OutputCollector来提交tuples.
 * 官方建议所有的输入tuples在处理完之后进行ack或者fail,否则storm无法判断该tuples是否被处理完毕
 * 一般使用IBasicBolt,在execute方法中额外提供了outputCollector,会更加方便处理
 * @param input
 */
void execute(Tuple input);
/**
 * Bolt关闭的时候被调用,由于是被supervisor使用kill 9干掉的,所以并不保证cleanup会被执行
 */
void cleanup();


IComponent.java


组件接口,所有的bolt和spout都可以视作组件
/**
 * 申明了当前组件的输出模式
 * @param declarer 申明输出streamId,输出的field,判断一个output stream是否是direct stream
 */
void declareOutputFields(OutputFieldsDeclarer declarer);
/**
 *获取组件配置.
 * @return
 */
Map<String, Object> getComponentConfiguration();


IRichBolt.java


跟IBolt接口相似,只是多继承了IComponent,多了申明输出和获取配置两个接口
IBasicBolt.java
/**
 * 跟IBolt.java中作用类似,只是少了OutPutCollector
 */
void prepare(Map stormConf, TopologyContext context);
/**
 * 跟Ibolt.java中作用类似,多了OutPutCollector
 */
void execute(Tuple input, BasicOutputCollector collector);

void cleanup();




优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/172

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。