public KafkaMessageService(ILogger logger, IConsumer <Ignore, Person> kafkaConsumer, SQLhandler sqlHandler) { _logger = logger; _kafkaConsumer = kafkaConsumer; _sqlHandler = sqlHandler; _mainThread = new Thread(MainMessageService); _mainThread.IsBackground = true; _cancellationTokenSrc = new CancellationTokenSource(); }
static void Main(string[] args) { //init() Logger instance - will be used over whole application. var logger = LogHandler.Logger; logger.Information(">> Service started."); Console.WriteLine(">> Service started."); try { //var config = GetJsonConfig(); //Console.WriteLine("json-config: " + config["key1"]);//Example how to access configurations. //create a KafkaConsumer var consumer = new KafkaConsumer(logger, new ProtoDeserializer <Person>()).Consumer; //Create SQL Handler - connections etc. var sqlHandler = new SQLhandler(); var exitCode = HostFactory.Run(x => { x.Service <KafkaMessageService>(s => { s.ConstructUsing(kafkaMessageService => new KafkaMessageService(logger, consumer, sqlHandler)); s.WhenStarted(kafkaMessageService => kafkaMessageService.Start()); s.WhenStopped(kafkaMessageService => kafkaMessageService.Stop()); }); x.RunAsLocalSystem(); x.SetServiceName("MyKafkaMessageService");//TODO: change these settings. x.SetDisplayName("My Kafka Message Service"); x.SetDescription("This is my service that handles messages from a local Kafka-cluster."); }); int exitCodeValue = (int)Convert.ChangeType(exitCode, exitCode.GetTypeCode()); Environment.ExitCode = exitCodeValue; } catch (Exception e) { //TODO. exit program here as well.? logger.Error(">> Unforseen error: " + e.ToString()); Console.WriteLine(">> Unforseen error: " + e.ToString()); Environment.Exit(-1); } }