Esempio n. 1
0
        public IConsumerManager Create(IConsumerConfiguration configuration, IDependencyResolver resolver)
        {
            var logHandler = resolver.Resolve <ILogHandler>();

            var middlewares = configuration.MiddlewareConfiguration.Factories
                              .Select(factory => factory(resolver))
                              .ToList();

            var consumer = new Consumer(configuration, logHandler);

            var consumerWorkerPool = new ConsumerWorkerPool(
                consumer,
                resolver,
                logHandler,
                new MiddlewareExecutor(middlewares),
                configuration.DistributionStrategyFactory);

            var feeder = new WorkerPoolFeeder(
                consumer,
                consumerWorkerPool,
                logHandler);

            var consumerManager = new ConsumerManager(
                consumer,
                consumerWorkerPool,
                feeder,
                logHandler);

            return(consumerManager);
        }
Esempio n. 2
0
        public async Task StartAsync(CancellationToken stopCancellationToken = default)
        {
            foreach (var consumerConfiguration in this.configuration.Clusters.SelectMany(cl => cl.Consumers))
            {
                var dependencyScope = this.dependencyResolver.CreateScope();

                var middlewares = consumerConfiguration.MiddlewareConfiguration.Factories
                                  .Select(factory => factory(dependencyScope.Resolver))
                                  .ToList();

                var consumerWorkerPool = new ConsumerWorkerPool(
                    dependencyScope.Resolver,
                    this.logHandler,
                    new MiddlewareExecutor(middlewares),
                    consumerConfiguration.DistributionStrategyFactory);

                var consumer = new KafkaConsumer(
                    consumerConfiguration,
                    this.consumerManager,
                    this.logHandler,
                    consumerWorkerPool,
                    stopCancellationToken);

                this.consumers.Add(consumer);

                await consumer.StartAsync().ConfigureAwait(false);
            }
        }
Esempio n. 3
0
        public async Task Initialize(CancellationToken stopCancellationToken = default)
        {
            foreach (var vvv in config.GetSection("eventbus").GetChildren())
            {
                var             dependencyScope        = this.dependencyResolver.CreateScope();
                ConsumerSetting vconsumerConfiguration = new ConsumerSetting();

                var consumerWorkerPool = new ConsumerWorkerPool(
                    dependencyScope.Resolver,
                    vconsumerConfiguration,
                    this.logHandler
                    );
                var consumer = dependencyScope.Resolver.Resolve <IConsumerClient>("Kafka");
                consumer.Initialize(vconsumerConfiguration);

                //var consumer = new KafkaConsumer(
                //     vconsumerConfiguration,
                //     this.consumerManager,
                //     this.logHandler,
                //     consumerWorkerPool,
                //     stopCancellationToken);

                //this.consumers.Add(consumer);

                //await consumer.StartAsync().ConfigureAwait(false);

                // Console.WriteLine("Key = " + v.Key);
            }
            await Task.CompletedTask;
        }
Esempio n. 4
0
        public IConsumerManager Create(IConsumerConfiguration configuration, IDependencyResolver resolver)
        {
            var logHandler = resolver.Resolve <ILogHandler>();

            var consumer = configuration.CustomFactory(new Consumer(configuration, resolver, logHandler), resolver);

            var consumerWorkerPool = new ConsumerWorkerPool(
                consumer,
                resolver,
                new MiddlewareExecutor(configuration.MiddlewaresConfigurations),
                configuration,
                logHandler);

            var feeder = new WorkerPoolFeeder(
                consumer,
                consumerWorkerPool,
                logHandler);

            var consumerManager = new ConsumerManager(
                consumer,
                consumerWorkerPool,
                feeder,
                logHandler);

            return(consumerManager);
        }
Esempio n. 5
0
        public async Task StartAsync(CancellationToken stopCancellationToken = default)
        {
            await this.Initialize(stopCancellationToken);

            foreach (var consumerConfiguration in this.configuration.Clusters.SelectMany(cl => cl.Consumers))
            {
                var dependencyScope = this.dependencyResolver.CreateScope();

                var consumerWorkerPool = new ConsumerWorkerPool(dependencyScope.Resolver, consumerConfiguration, this.logHandler);

                var consumer = new KafkaConsumer(
                    consumerConfiguration,
                    this.consumerManager,
                    this.logHandler,
                    consumerWorkerPool,
                    stopCancellationToken);

                this.consumers.Add(consumer);

                await consumer.StartAsync().ConfigureAwait(false);
            }
        }