private static IServiceCollection AddOnPremiseInfrastructure(this IServiceCollection services, IConfiguration config) { services.Scan(scan => { scan.FromAssembliesOf(typeof(CustomerDetailsHandler)) .RegisterHandlers(typeof(IRequestHandler <>)) .RegisterHandlers(typeof(IRequestHandler <,>)) .RegisterHandlers(typeof(INotificationHandler <>)); }).AddMongoDb(config); var kafkaConnStr = config.GetConnectionString("kafka"); var eventsTopicName = config["eventsTopicName"]; var groupName = config["eventsTopicGroupName"]; var consumerConfig = new EventConsumerConfig(kafkaConnStr, eventsTopicName, groupName); var eventstoreConnStr = config.GetConnectionString("eventstore"); return(services.AddKafka(consumerConfig) .AddEventStore(eventstoreConnStr)); }
public static IServiceCollection RegisterWorker(this IServiceCollection services, IConfiguration config) { var kafkaConnStr = config.GetConnectionString("kafka"); var eventsTopicName = config["eventsTopicName"]; var groupName = config["eventsTopicGroupName"]; var consumerConfig = new EventConsumerConfig(kafkaConnStr, eventsTopicName, groupName); services.AddSingleton(consumerConfig); services.AddSingleton(typeof(EventConsumer <,>)); services.AddSingleton <IEventConsumerFactory, EventConsumerFactory>(); services.AddHostedService(ctx => { var factory = ctx.GetRequiredService <IEventConsumerFactory>(); return(new EventsConsumerWorker(factory)); }); return(services); }