package stormapplied.flashsale;
import org.apache.commons.lang.StringUtils;
import backtype.storm.Config;
import backtype.storm.StormSubmitter;
import backtype.storm.metric.LoggingMetricsConsumer;
public class RemoteTopologyRunner {
public static void main(String[] args) throws Exception {
if (args.length <= 0 || args.length > 2 || StringUtils.isBlank(args[0])) {
System.out.println("Error deploying topology.");
System.out.println("Usage: <topology name> debug(optional)");
System.out.println("Please provide correct command-line arguments and try again.");
System.exit(1);
}
String topologyName = args[0];
Config config = createConfig(shouldRunInDebugMode(args));
StormSubmitter.submitTopology(topologyName, config, FlashSaleTopologyBuilder.build());
}
private static boolean shouldRunInDebugMode(String[] args) {
return args.length > 1 && "debug".equalsIgnoreCase(args[1]);
}
private static Config createConfig(Boolean debug) {
int NUM_WORKERS = 1;
int NUM_ACKERS = NUM_WORKERS;
int TIMEOUT = 30;
Config config = new Config();
config.setDebug(debug);
config.setMessageTimeoutSecs(TIMEOUT);
config.setNumWorkers(NUM_WORKERS);
config.setNumAckers(NUM_ACKERS);
config.registerMetricsConsumer(LoggingMetricsConsumer.class, 1);
return config;
}
}