Ejemplo n.º 1
0
        public void Build_AllCalls_ReturnPassedValues()
        {
            // Arrange
            var                   clusterConfiguration = this.fixture.Create <ClusterConfiguration>();
            var                   topic1               = this.fixture.Create <string>();
            var                   topic2               = this.fixture.Create <string>();
            var                   name                 = this.fixture.Create <string>();
            const int             bufferSize           = 100;
            const int             workers              = 10;
            const AutoOffsetReset offsetReset          = AutoOffsetReset.Earliest;
            var                   groupId              = this.fixture.Create <string>();
            const int             autoCommitInterval   = 10000;
            const int             maxPollIntervalMs    = 500000;
            ConsumerCustomFactory customFactory        = (producer, resolver) => producer;
            Action <string>       statisticsHandler    = s => { };
            const int             statisticsIntervalMs = 100;
            var                   consumerConfig       = new ConsumerConfig();

            this.target
            .Topics(topic1)
            .Topic(topic2)
            .WithName(name)
            .WithBufferSize(bufferSize)
            .WithWorkersCount(workers)
            .WithGroupId(groupId)
            .WithAutoOffsetReset(offsetReset)
            .WithManualStoreOffsets()
            .WithAutoCommitIntervalMs(autoCommitInterval)
            .WithMaxPollIntervalMs(maxPollIntervalMs)
            .WithConsumerConfig(consumerConfig)
            .WithCustomFactory(customFactory)
            .WithStatisticsIntervalMs(statisticsIntervalMs)
            .WithStatisticsHandler(statisticsHandler)
            .AddMiddlewares(m => m.Add <IMessageMiddleware>());

            // Act
            var configuration = this.target.Build(clusterConfiguration);

            // Assert
            configuration.Topics.Should().BeEquivalentTo(topic1, topic2);
            configuration.ConsumerName.Should().Be(name);
            configuration.BufferSize.Should().Be(bufferSize);
            configuration.WorkerCount.Should().Be(workers);
            configuration.GroupId.Should().Be(groupId);
            configuration.GetKafkaConfig().AutoOffsetReset.Should().Be(offsetReset);
            configuration.AutoStoreOffsets.Should().Be(false);
            configuration.GetKafkaConfig().EnableAutoOffsetStore.Should().Be(false);
            configuration.GetKafkaConfig().EnableAutoCommit.Should().Be(false);
            configuration.AutoCommitInterval.Should().Be(TimeSpan.FromMilliseconds(autoCommitInterval));
            configuration.GetKafkaConfig().MaxPollIntervalMs.Should().Be(maxPollIntervalMs);
            configuration.GetKafkaConfig().StatisticsIntervalMs.Should().Be(statisticsIntervalMs);
            configuration.StatisticsHandlers.Should().HaveElementAt(0, statisticsHandler);
            configuration.GetKafkaConfig().Should().BeSameAs(consumerConfig);
            configuration.MiddlewareConfiguration.Factories.Should().HaveCount(1);
        }
Ejemplo n.º 2
0
        public IConsumerConfigurationBuilder WithAutoOffsetReset(KafkaFlow.AutoOffsetReset autoOffsetReset)
        {
            this.autoOffsetReset = autoOffsetReset switch
            {
                KafkaFlow.AutoOffsetReset.Earliest => AutoOffsetReset.Earliest,
                KafkaFlow.AutoOffsetReset.Latest => AutoOffsetReset.Latest,
                _ => throw new InvalidEnumArgumentException(
                          nameof(autoOffsetReset),
                          (int)autoOffsetReset,
                          typeof(KafkaFlow.AutoOffsetReset))
            };

            return(this);
        }
        public IConsumerConfigurationBuilder WithAutoOffsetReset(KafkaFlow.AutoOffsetReset autoOffsetReset)
        {
            switch (autoOffsetReset)
            {
            case KafkaFlow.AutoOffsetReset.Earliest:
                this.consumerConfig.AutoOffsetReset = AutoOffsetReset.Earliest;
                break;

            case KafkaFlow.AutoOffsetReset.Latest:
                this.consumerConfig.AutoOffsetReset = AutoOffsetReset.Latest;
                break;
            }

            return(this);
        }