package com.kspichale.strom_demo;
import java.util.Map;
import backtype.storm.task.OutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.IRichBolt;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
@SuppressWarnings("rawtypes")
public class DispatcherBolt implements IRichBolt {
private static final long serialVersionUID = 1L;
private OutputCollector collector;
private LogfileParser parser = new LogfileParser();
@Override
public void prepare(Map stormConf, TopologyContext context,
OutputCollector collector) {
this.collector = collector;
}
@Override
public void execute(Tuple input) {
final String feedUrl = input.getStringByField("feed");
final LoggingValues parseLine = parser.parseLine(feedUrl);
try {
collector.emit(new Values(parseLine.getUrl(), parseLine.getDate()));
collector.ack(input);
} catch (Throwable t) {
t.printStackTrace();
collector.fail(input);
}
}
@Override
public void cleanup() {
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("url", "date"));
}
@Override
public Map<String, Object> getComponentConfiguration() {
return null;
}
}