storm定時任務使用例項
阿新 • • 發佈:2018-12-21
1.背景
需要在bolt中定時執行某些操作2.方法
都是利用系統自帶的定時tuple來完成,相當於系統自動發一個帶有特殊標記的tuple,然後自己在bolt中判斷,若為此特殊tuple,執行定時函式。 (1)如果所有bolt都需要定時,可在topology入口處通過config設定 (2)如果只有某一類bolt需要定時,可在該bolt內部override getComponetConfiguration方法設定3.實現
(1)在topology入口處 [java]- conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 60);// 設定本Bolt定時發射資料
- tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID)
(2)bolt內部 [java] view plain copy
- @Override
- public Map<String, Object> getComponentConfiguration() {
- // configure how often a tick tuple will be sent to ParseBolt
- Config conf = new Config();
- conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, TOPOLOGY_TICK_TUPLE_FREQ_SECS);
- return conf;
- }
執行函式內: [java] view plain copy
- public void execute(Tuple tuple, BasicOutputCollector basicOutputCollector) {
- if (tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID) &&
- tuple.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID)) {
- //some things to do
- return;
- }
- }