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));
        }
Beispiel #2
0
        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);
        }