Simple .NET consumer example
Review this example code to learn how you can create a simple .NET consumer. This consumer is capable of consuming around 50000 messages every second in development environment.
var config = new ConsumerConfig
{
BootstrapServers = "broker:9092",
GroupId = "simple-dotnet-consumer",
AutoOffsetReset = AutoOffsetReset.Earliest,
EnablePartitionEof = true
};
using var consumer = new ConsumerBuilder<string, string>(config)
.SetErrorHandler((_, e) => Console.WriteLine($"Error: {e.Reason}"))
.Build();
consumer.Subscribe(new List<string>() {"topic"});
var start = DateTime.Now;
long messageCounter = 0;
try
{
while (!(Console.KeyAvailable && Console.ReadKey().Key == ConsoleKey.Q))
{
var result = consumer.Consume(TimeSpan.FromMilliseconds(100));
if (result == null) { continue; }
if (result.IsPartitionEOF) { break; }
++messageCounter;
if (messageCounter % 1024 == 0) { Console.WriteLine($"Received message key: \"{result.Message.Key}\" value: {result.Message.Value}"); }
}
} catch (OperationCanceledException) {}
consumer.Close(); // commit offset and unsubscribe
var elapsed = DateTime.Now - start;
Console.WriteLine("average throughput: {0:N3} msg/sec, {1} messages over {2:N3} sec", messageCounter / elapsed.TotalSeconds, messageCounter, elapsed.TotalSeconds);