#pragma warning disable 8618 public EventConsumer( IEventDeserializer eventDeserializer, EventConsumerConfig config, ILogger <EventConsumer <TAggregate, TAggregateId, TDeserializer> > logger) { _eventDeserializer = eventDeserializer; _logger = logger; var aggregateType = typeof(TAggregate); var consumerConfig = new ConsumerConfig { GroupId = config.ConsumerGroup, BootstrapServers = config.KafkaConnectionString, AutoOffsetReset = AutoOffsetReset.Earliest, EnablePartitionEof = true }; var consumerBuilder = new ConsumerBuilder <TAggregateId, string>(consumerConfig); var keyDeserializerFactory = new KeyDeserializerFactory(); consumerBuilder.SetKeyDeserializer(keyDeserializerFactory.Create <TDeserializer, TAggregateId>()); _eventConsumer = consumerBuilder.Build(); var topicName = $"{config.TopicBaseName}-{aggregateType.Name}"; _eventConsumer.Subscribe(topicName); }
public static IServiceCollection AddKafkaEventProducer <TAggregate, TAggregateId>( this IServiceCollection services, EventConsumerConfig configuration) where TAggregate : class, IAggregate <TAggregateId> where TAggregateId : class, IAggregateId { return(services.AddSingleton <IEventProducer <TAggregate, TAggregateId> >( ctx => { var logger = ctx.GetRequiredService <ILogger <EventProducer <TAggregate, TAggregateId> > >(); return new EventProducer <TAggregate, TAggregateId>( configuration.TopicBaseName, configuration.KafkaConnectionString, logger); })); }