public static void RegisterRabbitMqConsumer(this IServiceCollection serviceCollection, ConsumerRabbitMqSettings rabbitMqSettings, ICollection <Assembly> withConsumersFromAssemblies) { serviceCollection.AddEventTypeProvider(new ConsumersEventTypeProviderBuilder(new EventNamespaceReader()) .AddEventsFromAssemblies(withConsumersFromAssemblies) .Build()); serviceCollection.AddMassTransitHostedService(); RegisterRabbitMq(serviceCollection, rabbitMqSettings, (busConfigurator, provider) => { busConfigurator.UseRetry(x => x.Incremental(2, TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(12))); busConfigurator.UseServiceScope(provider); busConfigurator.ReceiveEndpointForEachConsumer(provider, rabbitMqSettings.QueuePrefix, withConsumersFromAssemblies, configurator => { configurator.PrefetchCount = 64; }); busConfigurator.UseConsumeFilter(typeof(TransactionFilter <>), provider); busConfigurator.UseConsumeFilter(typeof(ProcessedEventFilter <>), provider); }, configurator => { configurator.AddConsumers(ConsumersProvider.GetConsumers(withConsumersFromAssemblies).ToArray()); }); }
public EventsConsumerBuilder ToRabbitMq(ConsumerRabbitMqSettings rabbitMqSettings) { _rabbitMqSettings = rabbitMqSettings; return(this); }