package mypackage.topology;
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.StormSubmitter;
import backtype.storm.topology.TopologyBuilder;
import mypackage.bolts.HashtagAndTweetBolt;
import mypackage.bolts.SqlDb;
import mypackage.bolts.report;
import mypackage.spouts.TwitterSpout;
/**
* Orchestrates the elements and forms a topology to run the unshortening service.
*
* @author Michael Vogiatzis
*/
public class TopologyWithSQL {
public static void main (String[] args) throws Exception{
TopologyBuilder builder = new TopologyBuilder();
// builder.setSpout("spout", new TwitterSpout(), 1);
builder.setSpout("spout",new TwitterSpout(),50);
builder.setBolt("unshortenBolt", new HashtagAndTweetBolt(), 2)
.shuffleGrouping("spout");
// builder.setBolt("dbBolt", new CassandraBolt(), 2)
// .shuffleGrouping("unshortenBolt");
builder.setBolt("dbbolt",new SqlDb(),2)
.shuffleGrouping("unshortenBolt");
builder.setBolt("report-bolt", new report(), 1).globalGrouping("dbbolt");
Config conf = new Config();
conf.setDebug(false);
//submit it to the cluster, or submit it locally
if(args!=null && args.length > 0) {
conf.setNumWorkers(3);
conf.setNumAckers(5);
StormSubmitter.submitTopology(args[0], conf, builder.createTopology());
} else {
conf.setMaxTaskParallelism(10);
LocalCluster cluster = new LocalCluster();
cluster.submitTopology("unshortening", conf, builder.createTopology());
//Thread.sleep(10000);
//cluster.shutdown();
}
}
}