Storm之Bolt-接口

简介:



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();




目录
相关文章
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!
|
10月前
|
负载均衡 监控 API
slb健康检查路径
slb健康检查路径
202 7
|
11月前
|
自然语言处理
多语言指令微调(MuIT)
多语言指令微调(MuIT)
287 1
|
存储 前端开发 Android开发
GB28181设备接入侧录像查询和录像下载技术探究之实时录像
我们在对接GB28181设备接入侧的时候,除了常规实时音视频按需上传外,还有个重要的功能,就是本地实时录像,录像后的数据,在执法记录仪等前端设备留底,然后,到工作站拷贝到专门的平台。
345 1
|
11月前
|
Java Nacos 开发工具
Nacos入门到精通
本文详细介绍了Nacos的基本概念、安装过程、配置管理功能,并通过具体代码示例展示了如何使用Java SDK和Spring Boot拉取和监听Nacos中的配置信息。
743 0
Nacos入门到精通
|
11月前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
136 0
rabbitmq基础教程(ui,java,springamqp)
|
运维 监控 安全
多云环境下的Docker部署策略
随着云计算的快速发展,多云环境(Multi-Cloud Environment)已经成为了现代应用部署的一种重要选择。在这种环境下,企业可以利用多个云服务提供商的资源来提高可用性、灵活性和容错性。Docker容器技术在多云环境中的应用变得越来越普遍,本文将探讨多云环境下的Docker部署策略,并提供丰富的示例代码,以帮助大家更好地管理和运维容器化应用。
|
缓存 Java 应用服务中间件
【高并发优化手段】基于Springboot项目(二)
【高并发优化手段】基于Springboot项目
1100 0
|
SQL 存储 JavaScript
前端浏览器调试详解版
前端浏览器调试详解版
292 0

热门文章

最新文章