private IProducer <string, GenericRecord> CreateProducer() => new ProducerBuilder <string, GenericRecord>(new ProducerConfig { BootstrapServers = (string)_config[KafkaPropNames.BootstrapServers] }) .SetKeySerializer(Serializers.Utf8) .SetValueSerializer(new AvroSerializer <GenericRecord>(_genericRecordConfig.GetSchemaRegistryClient())) .Build();
private IConsumer <string, GenericRecord> CreateConsumer() { var consumer = new ConsumerBuilder <string, GenericRecord>( new ConsumerConfig { BootstrapServers = (string)_config[KafkaPropNames.BootstrapServers], GroupId = (string)_config[KafkaPropNames.GroupId], AutoOffsetReset = AutoOffsetReset.Earliest }) .SetKeyDeserializer(Deserializers.Utf8) .SetValueDeserializer(new AvroDeserializer <GenericRecord>(_genericRecordConfig.GetSchemaRegistryClient()).AsSyncOverAsync()) .SetErrorHandler((_, e) => _logger(e.Reason)) .SetStatisticsHandler((_, json) => Console.WriteLine($"Stats: {json}")) .Build(); consumer.Assign(new List <TopicPartitionOffset> { new TopicPartitionOffset(_topic, (int)_config[KafkaPropNames.Partition], (int)_config[KafkaPropNames.Offset]) }); _creationTime = DateTime.Now; return(consumer); }