Exemplo n.º 1
0
        /// <summary>
        /// Add service bus
        /// </summary>
        /// <param name="services"><see cref="IServiceCollection"/></param>
        /// <param name="assembliesSetup">Assemblies where to find <see cref="IIntegrationEvent"/></param>
        /// <param name="busFactory">Configured bus factory</param>
        /// <param name="consumersConfigurationAction"><see cref="ConsumersConfiguration"/></param>
        /// <returns><see cref="IServiceCollection"/></returns>
        public static IServiceCollection AddServiceBus(this IServiceCollection services, Action <IList <Assembly> > assembliesSetup,
                                                       Func <IBusRegistrationContext, IBusControl> busFactory, Action <ConsumersConfiguration> consumersConfigurationAction = null)
        {
            var consumersConfiguration = new ConsumersConfiguration();

            consumersConfigurationAction?.Invoke(consumersConfiguration);

            services.AddScoped <IServiceBus, ServiceBus>();
            services.InjectIntegrationEventHandler(assembliesSetup);

            services.AddMassTransit(busConfigurator =>
            {
                busConfigurator.AddBus(busFactory);
                busConfigurator.AddConsumers(consumersConfiguration.ConsumerTypes.ToArray());
            });

            services.AddScoped <ServiceBusPublisher>(provider =>
                                                     provider.GetRequiredService <IPublishEndpoint>().Publish);

            services.AddSingleton <IHostedService, BusHostedService>();

            return(services);
        }
Exemplo n.º 2
0
 private void ConfigureMassTransit(IServiceCollection services)
 {
     services.ConfigureMassTransit(_rabbitMqConfig,
                                   ConsumersConfiguration.AddConsumersFromAssembly(GetApplicationLayerAssembly()),
                                   RegisterRabbitMqEndpoints());
 }