using Confluent.Kafka; using Microsoft.Extensions.Configuration; using System; using System.Threading; namespace directors_assistant { class Program { static void Main(string[] args) { var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .Build(); Library.Load(config["kafka location"]); var producerConfig = new ProducerConfig { BootstrapServers = config["bootstrap servers"] }; var consumerConfig = new ConsumerConfig { BootstrapServers = config["bootstrap servers"], GroupId = config["handling group"], }; using (var producer = new ProducerBuilder(producerConfig).Build()) { try { producer.Produce(config["topic"], new Message { Value = "" + config["handling group"] }); } catch (ProduceException e) { Console.WriteLine($"Delivery failed: {e.Error.Reason}"); } using (var consumer = new ConsumerBuilder(consumerConfig).Build()) { consumer.Subscribe(config["topic"]); CancellationTokenSource cts = new CancellationTokenSource(); Console.CancelKeyPress += (_, e) => { e.Cancel = true; // prevent the process from terminating. cts.Cancel(); }; try { while (true) { try { var cr = consumer.Consume(cts.Token); Console.WriteLine($"Consumed message '{cr.Message.Value}' at: '{cr.TopicPartitionOffset}'."); } catch (ConsumeException e) { Console.WriteLine($"Error occured: {e.Error.Reason}"); } } } catch (OperationCanceledException) { consumer.Close(); } } } } } }