package com.neverwinterdp.sparkngin;
import java.util.HashMap;
import java.util.Map;
import com.beust.jcommander.DynamicParameter;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.neverwinterdp.netty.http.HttpServer;
import com.neverwinterdp.sparkngin.http.JBinaryMessageRouteHandler;
import com.neverwinterdp.sparkngin.http.JSONMessageRouteHandler;
import com.neverwinterdp.sparkngin.http.TrackingPixelRouteHandler;
import com.neverwinterdp.util.LoggerFactory;
import com.neverwinterdp.yara.MetricRegistry;
public class Main {
static public class Options {
@Parameter(names = "--data-dir", description = "Data directory")
String dataDir = "./data" ;
@Parameter(names = "--forwarder", description = "The forwarder, either nulldev or kafka")
String forwarder = "nulldev" ;
@Parameter(names = "--http-listen-port", description = "Server http listen port")
int httpListenPort = 7080;
@DynamicParameter(names = "--kafka:", description = "Kafka producer parameters")
private Map<String, String> kafkaParams = new HashMap<String, String>();
@DynamicParameter(names = "--sparkngin:", description = "Sparkngin properties")
private Map<String, String> sparknginParams = new HashMap<String, String>();
}
static public void main(String[] args) throws Exception {
Options options = new Options() ;
JCommander jcommander = new JCommander(options, args) ;
jcommander.usage();
LoggerFactory lfactory = new LoggerFactory() ;
MetricRegistry mRegistry = new MetricRegistry() ;
HttpServer server = new HttpServer() ;
server.setLoggerFactory(lfactory) ;
server.setPort(options.httpListenPort) ;
MessageForwarder forwarder = null ;
if("kafka".equals(options.forwarder)) {
forwarder = new KafkaMessageForwarder(lfactory, mRegistry, options.kafkaParams) ;
} else {
forwarder = new NullDevMessageForwarder(options.sparknginParams) ;
}
Sparkngin sparkngin = new Sparkngin(mRegistry, forwarder, options.dataDir) ;
server.add("/message/json", new JSONMessageRouteHandler(sparkngin));
server.add("/message/jbinary", new JBinaryMessageRouteHandler(sparkngin));
server.add("/tracker/:trackerName/:site", new TrackingPixelRouteHandler(sparkngin, options.sparknginParams));
server.startAsDeamon() ;
Thread.currentThread().join();
}
}