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());
            });
        }
Пример #2
0
 public EventsConsumerBuilder ToRabbitMq(ConsumerRabbitMqSettings rabbitMqSettings)
 {
     _rabbitMqSettings = rabbitMqSettings;
     return(this);
 }