Ejemplo n.º 1
0
        public void Apply(INybusConfigurator nybus)
        {
            var options = new RabbitMqOptions();

            if (_configurationSectionName != null && nybus.Configuration.TryGetSection(_configurationSectionName, out var configurationSection))
            {
                configurationSection.Bind(options);
            }

            nybus.AddServiceConfiguration(sc => sc.AddSingleton(options));

            nybus.AddServiceConfiguration(sc => sc.AddTransient <IRabbitMqConfiguration>(sp =>
            {
                var factory = sp.GetRequiredService <IConfigurationFactory>();

                var op = sp.GetRequiredService <RabbitMqOptions>();

                var configuration = factory.Create(op);

                foreach (var configurationAction in _configurationActions)
                {
                    configurationAction?.Invoke(configuration);
                }

                return(configuration);
            }));

            foreach (var registration in _queueFactoryProviderRegistrations)
            {
                nybus.AddServiceConfiguration(registration);
            }
        }
Ejemplo n.º 2
0
        public static void UseInMemoryBusEngine(this INybusConfigurator configurator)
        {
            configurator.AddServiceConfiguration(svc => svc.AddSingleton <ISerializer, JsonSerializer>());

            configurator.AddServiceConfiguration(svc => svc.AddSingleton <IEnvelopeService, EnvelopeService>());

            configurator.UseBusEngine <InMemoryBusEngine>();
        }
Ejemplo n.º 3
0
        public static void UseBusEngine <TEngine>(this INybusConfigurator configurator, Action <IServiceCollection> configureServices = null)
            where TEngine : class, IBusEngine
        {
            configurator.AddServiceConfiguration(services => services.AddSingleton <IBusEngine, TEngine>());

            if (configureServices != null)
            {
                configurator.AddServiceConfiguration(configureServices);
            }
        }
Ejemplo n.º 4
0
 public static void RegisterErrorFilterProvider <TProvider>(this INybusConfigurator configurator, Func <IServiceProvider, IErrorFilterProvider> factory = null) where TProvider : class, IErrorFilterProvider
 {
     if (factory == null)
     {
         configurator.AddServiceConfiguration(sc => sc.AddSingleton <IErrorFilterProvider, TProvider>());
     }
     else
     {
         configurator.AddServiceConfiguration(sc => sc.AddSingleton(factory));
     }
 }
Ejemplo n.º 5
0
        public static void SubscribeToEvent <TEvent, TEventHandler>(this INybusConfigurator configurator, TEventHandler handler)
            where TEvent : class, IEvent
            where TEventHandler : class, IEventHandler <TEvent>
        {
            configurator.AddSubscription(builder => builder.SubscribeToEvent <TEvent>(typeof(TEventHandler)));

            configurator.AddServiceConfiguration(services => services.AddSingleton(handler));
        }
Ejemplo n.º 6
0
        public static void SubscribeToCommand <TCommand, TCommandHandler>(this INybusConfigurator configurator, TCommandHandler handler)
            where TCommand : class, ICommand
            where TCommandHandler : class, ICommandHandler <TCommand>
        {
            configurator.AddSubscription(builder => builder.SubscribeToCommand <TCommand>(typeof(TCommandHandler)));

            configurator.AddServiceConfiguration(services => services.AddSingleton(handler));
        }
Ejemplo n.º 7
0
        public static void UseRabbitMqBusEngine(this INybusConfigurator nybus, Action <IRabbitMqConfigurator> configure = null)
        {
            nybus.AddServiceConfiguration(svc => svc.AddSingleton <IConfigurationFactory, ConfigurationFactory>());

            nybus.AddServiceConfiguration(svc => svc.AddSingleton <IConnectionFactoryProviders, ConnectionFactoryProviders>());

            var configurator = new RabbitMqConfigurator();

            configurator.RegisterQueueFactoryProvider <StaticQueueFactoryProvider>();

            configurator.RegisterQueueFactoryProvider <TemporaryQueueFactoryProvider>();

            configure?.Invoke(configurator);

            configurator.Apply(nybus);

            nybus.UseBusEngine <RabbitMqBusEngine>();
        }