/// <summary> /// Replaces the Kafka connectivity based on Confluent.Kafka with a mocked in-memory message broker that /// <b>more or less</b> replicates the Kafka behavior. /// </summary> /// <param name="services"> /// The <see cref="Microsoft.Extensions.DependencyInjection.IServiceCollection" /> to add the service /// to. /// </param> /// <param name="optionsAction"> /// Additional options (such as topics and partitions settings). /// </param> /// <returns> /// The <see cref="IServiceCollection" /> so that additional calls can be chained. /// </returns> public static IServiceCollection UseMockedKafka(this IServiceCollection services, Action <IMockedKafkaOptionsBuilder>?optionsAction = null) { services .RemoveAll <IConfluentConsumerBuilder>() .RemoveAll <IConfluentProducerBuilder>() .AddSingleton <IMockedKafkaOptions>(new MockedKafkaOptions()) .AddTransient <IConfluentProducerBuilder, MockedConfluentProducerBuilder>() .AddTransient <IConfluentConsumerBuilder, MockedConfluentConsumerBuilder>() .AddSingleton <IInMemoryTopicCollection, InMemoryTopicCollection>() .AddSingleton <IKafkaTestingHelper, KafkaTestingHelper>(); var optionsBuilder = new MockedKafkaOptionsBuilder(services); optionsAction?.Invoke(optionsBuilder); return(services); }
/// <summary> /// Replaces the Kafka connectivity based on Confluent.Kafka with a mocked in-memory message broker that /// <b>more or less</b> replicates the Kafka behavior. /// </summary> /// <param name="builder"> /// The <see cref="ISilverbackBuilder" />. /// </param> /// <param name="optionsAction"> /// Configures the mock options. /// </param> /// <returns> /// The <see cref="ISilverbackBuilder" /> so that additional calls can be chained. /// </returns> public static ISilverbackBuilder UseMockedKafka( this ISilverbackBuilder builder, Action <IMockedKafkaOptionsBuilder>?optionsAction = null) { Check.NotNull(builder, nameof(builder)); builder.Services .RemoveAll <IConfluentConsumerBuilder>() .RemoveAll <IConfluentProducerBuilder>() .AddSingleton <IMockedKafkaOptions>(new MockedKafkaOptions()) .AddTransient <IConfluentProducerBuilder, MockedConfluentProducerBuilder>() .AddTransient <IConfluentConsumerBuilder, MockedConfluentConsumerBuilder>() .AddSingleton <IInMemoryTopicCollection, InMemoryTopicCollection>() .AddSingleton <IKafkaTestingHelper, KafkaTestingHelper>(); var optionsBuilder = new MockedKafkaOptionsBuilder(builder.Services); optionsAction?.Invoke(optionsBuilder); return(builder); }