Storm之Bolt-接口
生活随笔
收集整理的這篇文章主要介紹了
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
IRichBolt.java
總結
以上是生活随笔為你收集整理的Storm之Bolt-接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Swift - 17 - 数组的初始化
- 下一篇: iOS学习7:iOS沙盒(sandBox