package com.kspichale.strom_demo;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import backtype.storm.spout.SpoutOutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.IRichSpout;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Values;
@SuppressWarnings("rawtypes")
public class UrlSpout implements IRichSpout {
private SpoutOutputCollector collector;
private Map conf;
private TopologyContext context;
private final Queue<String> queue = new LinkedList<String>();
private final List<String> urls;
public UrlSpout(List<String> urls) {
this.urls = urls;
}
@Override
public void open(final Map conf, final TopologyContext context,
final SpoutOutputCollector collector) {
this.collector = collector;
this.conf = conf;
this.context = context;
for (String url : urls)
queue.add(url);
}
@Override
public void nextTuple() {
String nextFeed = queue.poll();
if (nextFeed != null) {
System.out.println("FeedSpout: emitting = " + nextFeed);
collector.emit(new Values(nextFeed), nextFeed);
}
}
@Override
public void ack(Object feedId) {
// queue.add((String) feedId);
}
@Override
public void fail(Object feedId) {
// queue.add((String) feedId);
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("feed"));
}
@Override
public void close() {
// TODO Auto-generated method stub
}
@Override
public void activate() {
// TODO Auto-generated method stub
}
@Override
public void deactivate() {
// TODO Auto-generated method stub
}
@Override
public Map<String, Object> getComponentConfiguration() {
// TODO Auto-generated method stub
return null;
}
}