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); }
public ConsumerConfiguration( ConsumerConfig consumerConfig, IEnumerable <string> topics, string consumerName, ClusterConfiguration clusterConfiguration, bool managementDisabled, int workersCount, int bufferSize, Factory <IDistributionStrategy> distributionStrategyFactory, MiddlewareConfiguration middlewareConfiguration, bool autoStoreOffsets, TimeSpan autoCommitInterval, IReadOnlyList <Action <string> > statisticsHandlers, IReadOnlyList <Action <IDependencyResolver, List <TopicPartition> > > partitionsAssignedHandlers, IReadOnlyList <Action <IDependencyResolver, List <TopicPartitionOffset> > > partitionsRevokedHandlers, ConsumerCustomFactory customFactory) { this.consumerConfig = consumerConfig ?? throw new ArgumentNullException(nameof(consumerConfig)); if (string.IsNullOrEmpty(this.consumerConfig.GroupId)) { throw new ArgumentNullException(nameof(consumerConfig.GroupId)); } this.DistributionStrategyFactory = distributionStrategyFactory ?? throw new ArgumentNullException(nameof(distributionStrategyFactory)); this.MiddlewareConfiguration = middlewareConfiguration ?? throw new ArgumentNullException(nameof(middlewareConfiguration)); this.AutoStoreOffsets = autoStoreOffsets; this.AutoCommitInterval = autoCommitInterval; this.Topics = topics ?? throw new ArgumentNullException(nameof(topics)); this.ConsumerName = consumerName ?? Guid.NewGuid().ToString(); this.ClusterConfiguration = clusterConfiguration; this.ManagementDisabled = managementDisabled; this.WorkersCount = workersCount; this.StatisticsHandlers = statisticsHandlers; this.PartitionsAssignedHandlers = partitionsAssignedHandlers; this.PartitionsRevokedHandlers = partitionsRevokedHandlers; this.CustomFactory = customFactory; this.BufferSize = bufferSize > 0 ? bufferSize : throw new ArgumentOutOfRangeException( nameof(bufferSize), bufferSize, "The value must be greater than 0"); }
public IConsumerConfigurationBuilder WithCustomFactory(ConsumerCustomFactory customFactory) { this.customFactory = customFactory; return(this); }
/// <summary> /// Register a custom consumer factory to be internally used by the framework /// </summary> /// <param name="builder"></param> /// <param name="decoratorFactory">The factory method</param> /// <returns></returns> public static IConsumerConfigurationBuilder WithCustomFactory( this IConsumerConfigurationBuilder builder, ConsumerCustomFactory decoratorFactory) { return(((ConsumerConfigurationBuilder)builder).WithCustomFactory(decoratorFactory)); }