package storm.starter; import java.util.Map; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.StormSubmitter; import backtype.storm.task.OutputCollector; import backtype.storm.task.TopologyContext; import backtype.storm.topology.OutputFieldsDeclarer; import backtype.storm.topology.TopologyBuilder; import backtype.storm.topology.base.BaseRichBolt; import backtype.storm.tuple.Fields; import backtype.storm.tuple.Tuple; import backtype.storm.tuple.Values; import backtype.storm.utils.Utils; import storm.starter.spout.TwitterSampleSpout; /** * This is a basic example of a Storm topology. */ public class TweetTopology { public static class StdoutBolt extends BaseRichBolt { OutputCollector _collector; String taskName; @Override public void prepare(Map conf, TopologyContext context, OutputCollector collector) { _collector = collector; taskName = context.getThisComponentId() + "_" + context.getThisTaskId(); } @Override public void execute(Tuple tuple) { System.out.println(tuple.getValue(0)); _collector.emit(tuple, new Values(tuple.getValue(0))); _collector.ack(tuple); } @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { declarer.declare(new Fields("word")); } } public static void main(String[] args) throws Exception { TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("word", new TwitterSampleSpout("[Your customer key]", "[Your secret key]", "[Your access token]", "[Your access secret]"), 1); builder.setBolt("stdout", new StdoutBolt(), 3).shuffleGrouping("word"); Config conf = new Config(); conf.setDebug(true); if (args != null && args.length > 0) { conf.setNumWorkers(3); StormSubmitter.submitTopology(args[0], conf, builder.createTopology()); } else { LocalCluster cluster = new LocalCluster(); cluster.submitTopology("test", conf, builder.createTopology()); Utils.sleep(10000); cluster.killTopology("test"); cluster.shutdown(); } } }