package com.sumologic.client; import java.util.ArrayList; import com.sumologic.kinesis.KinesisConnectorRecordProcessorFactory; import com.sumologic.kinesis.KinesisConnectorExecutor; import com.sumologic.client.SumologicMessageModelPipeline; import com.sumologic.client.model.SimpleKinesisMessageModel; public class SumologicExecutor extends KinesisConnectorExecutor<SimpleKinesisMessageModel, String> { private static String defaultConfigFile = "SumologicConnector.properties"; /** * SumologicExecutor constructor. * * @param configFile * Properties for the connector */ public SumologicExecutor(String configFile) { super(configFile); } @Override public KinesisConnectorRecordProcessorFactory<SimpleKinesisMessageModel, String> getKinesisConnectorRecordProcessorFactory() { return new KinesisConnectorRecordProcessorFactory<SimpleKinesisMessageModel, String>( new SumologicMessageModelPipeline(), config); } /** * Main method starts and runs the SumologicExecutor. * * @param args * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { ArrayList<String> configFiles = new ArrayList<String>(); ArrayList<Thread> executorThreads = new ArrayList<Thread>(); for (String arg : args) { if (arg.endsWith(".properties")) { configFiles.add(arg); } } // if none of the arguments contained a config file, try the default // file name if (configFiles.size() == 0) { configFiles.add(defaultConfigFile); } for (String configFile : configFiles) { KinesisConnectorExecutor<SimpleKinesisMessageModel, String> sumologicExecutor = new SumologicExecutor( configFile); Thread executorThread = new Thread(sumologicExecutor); executorThreads.add(executorThread); executorThread.start(); } for(Thread executorThread : executorThreads){ executorThread.join(); } } }