public static IServiceBus Create( Action <IMassInstanceBusFactoryConfigurator> configure, IMassInstanceConsumerFactory consumerFactory) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var busEndpointConfiguration = busConfiguration.CreateEndpointConfiguration(); var sagaMessageExtractor = new SagaMessageExtractor(); var configurator = new MassInstanceBusFactoryConfigurator( busConfiguration, busEndpointConfiguration, consumerFactory, sagaMessageExtractor); configure(configurator); var result = BusConfigurationResult.CompileResults(configurator.Validate()); try { return(configurator.CreateBus()); } catch (Exception ex) { throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
static IBusControl Build(IBusFactory factory, IBusConfiguration busConfiguration, IEnumerable <ValidationResult> validationResult) { if (LogContext.Current == null) { LogContext.ConfigureCurrentLogContext(); } busConfiguration.HostConfiguration.LogContext = LogContext.Current; var result = BusConfigurationResult.CompileResults(validationResult); try { var busReceiveEndpointConfiguration = factory.CreateBusEndpointConfiguration(x => x.ConfigureConsumeTopology = false); var host = busConfiguration.HostConfiguration.Build(); var bus = new MassTransitBus(host, busConfiguration.BusObservers, busReceiveEndpointConfiguration); TaskUtil.Await(() => busConfiguration.BusObservers.PostCreate(bus)); return(bus); } catch (Exception ex) { TaskUtil.Await(() => busConfiguration.BusObservers.CreateFaulted(ex)); throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
protected IBusInstance CreateBus <T, TConfigurator>(T configurator, IBusRegistrationContext context, Action <IBusRegistrationContext, TConfigurator> configure, IEnumerable <IBusInstanceSpecification> specifications) where T : TConfigurator, IBusFactory where TConfigurator : IBusFactoryConfigurator { var loggerFactory = context.GetService <ILoggerFactory>(); if (loggerFactory != null) { LogContext.ConfigureCurrentLogContext(loggerFactory); } else if (LogContext.Current == null) { LogContext.ConfigureCurrentLogContext(); } _hostConfiguration.LogContext = LogContext.Current; context.UseHealthCheck(configurator); configure?.Invoke(context, configurator); specifications ??= Enumerable.Empty <IBusInstanceSpecification>(); IEnumerable <IBusInstanceSpecification> busInstanceSpecifications = specifications as IBusInstanceSpecification[] ?? specifications.ToArray(); IEnumerable <ValidationResult> validationResult = configurator.Validate() .Concat(busInstanceSpecifications.SelectMany(x => x.Validate())); var result = BusConfigurationResult.CompileResults(validationResult); try { var busReceiveEndpointConfiguration = configurator.CreateBusEndpointConfiguration(x => x.ConfigureConsumeTopology = false); var host = _hostConfiguration.Build() as IHost <TEndpointConfigurator>; var bus = new MassTransitBus(host, _hostConfiguration.BusConfiguration.BusObservers, busReceiveEndpointConfiguration); TaskUtil.Await(() => _hostConfiguration.BusConfiguration.BusObservers.PostCreate(bus)); IBusInstance instance = CreateBusInstance(bus, host, _hostConfiguration, context); foreach (var specification in busInstanceSpecifications) { specification.Configure(instance); } return(instance); } catch (Exception ex) { TaskUtil.Await(() => _hostConfiguration.BusConfiguration.BusObservers.CreateFaulted(ex)); throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
public void CreateReceiveEndpoint(string queueName, Action <IServiceBusReceiveEndpointConfigurator> configure) { var endpointConfigurator = new ServiceBusReceiveEndpointSpecification(_host, queueName); configure?.Invoke(endpointConfigurator); BusConfigurationResult.CompileResults(endpointConfigurator.Validate()); endpointConfigurator.Apply(_builder); }
public void CreateReceiveEndpoint(string queueName, Action <IInMemoryReceiveEndpointConfigurator> configure) { var specification = new InMemoryReceiveEndpointSpecification(queueName); configure?.Invoke(specification); BusConfigurationResult.CompileResults(specification.Validate()); specification.Apply(_builder); }
public void CreateReceiveEndpoint(string queueName, Action <IInMemoryReceiveEndpointConfigurator> configure) { var configuration = _configuration.CreateReceiveEndpointConfiguration(queueName, _configuration.CreateEndpointConfiguration()); configure?.Invoke(configuration.Configurator); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(); }
public void CreateReceiveEndpoint(string pathMatch, Action <IHttpReceiveEndpointConfigurator> configure) { var endpointConfigurator = new HttpReceiveEndpointSpecification(_host, _hosts, pathMatch, _configuration); configure?.Invoke(endpointConfigurator); BusConfigurationResult.CompileResults(endpointConfigurator.Validate()); endpointConfigurator.Apply(_builder); }
HostReceiveEndpointHandle ConnectSubscriptionEndpoint(IServiceBusSubscriptionEndpointConfiguration configuration) { LogContext.Debug?.Log("Connect subscription endpoint: {Topic}/{SubscriptionName}", configuration.Settings.Path, configuration.Settings.Name); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(this); return(ReceiveEndpoints.Start(configuration.Settings.Path)); }
HostReceiveEndpointHandle CreateSubscriptionEndpoint(Action <IServiceBusSubscriptionEndpointConfigurator> configure, SubscriptionEndpointSettings settings) { var configuration = _hostConfiguration.CreateSubscriptionEndpointConfiguration(settings); configure?.Invoke(configuration.Configurator); BusConfigurationResult.CompileResults(configuration.Validate()); return(_receiveEndpoints.Start(settings.Path)); }
public void CreateSubscriptionEndpoint(SubscriptionEndpointSettings settings, Action <IServiceBusSubscriptionEndpointConfigurator> configure) { var consumePipe = _builder.CreateConsumePipe(); var endpointConfigurator = new ServiceBusSubscriptionEndpointSpecification(_host, settings, consumePipe); configure?.Invoke(endpointConfigurator); BusConfigurationResult.CompileResults(endpointConfigurator.Validate()); endpointConfigurator.Apply(_builder); }
public void CreateReceiveEndpoint(string queueName, Action <IInMemoryReceiveEndpointConfigurator> configure) { var endpointConfiguration = _configuration.CreateNewConfiguration(); var specification = new InMemoryReceiveEndpointSpecification(_builder.InMemoryHost.Address, queueName, _sendTransportProvider, endpointConfiguration); configure?.Invoke(specification); BusConfigurationResult.CompileResults(specification.Validate()); specification.Apply(_builder); }
public void CreateReceiveEndpoint(string queueName, Action <IRabbitMqReceiveEndpointConfigurator> configure) { var endpointTopologySpecification = _configuration.CreateNewConfiguration(); var endpointConfigurator = new RabbitMqReceiveEndpointSpecification(_host, endpointTopologySpecification, queueName); configure?.Invoke(endpointConfigurator); BusConfigurationResult.CompileResults(endpointConfigurator.Validate()); endpointConfigurator.Apply(_builder); }
public void CreateReceiveEndpoint(string queueName, Action <IServiceBusReceiveEndpointConfigurator> configure) { var endpointTopologySpecification = _configuration.CreateNewConfiguration(); var endpointConfigurator = new ServiceBusReceiveEndpointSpecification(_host, queueName, endpointTopologySpecification, _sendTransportProvider); configure?.Invoke(endpointConfigurator); BusConfigurationResult.CompileResults(endpointConfigurator.Validate()); endpointConfigurator.Apply(_builder); }
public HostReceiveEndpointHandle ConnectReceiveEndpoint(string queueName, Action <IActiveMqReceiveEndpointConfigurator> configure = null) { var configuration = _hostConfiguration.CreateReceiveEndpointConfiguration(queueName); configure?.Invoke(configuration.Configurator); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(); return(_receiveEndpoints.Start(queueName)); }
public void CreateSubscriptionEndpoint(SubscriptionEndpointSettings settings, Action <IServiceBusSubscriptionEndpointConfigurator> configure) { var endpointConfiguration = _configuration.CreateNewConfiguration(); var endpointConfigurator = new ServiceBusSubscriptionEndpointSpecification(_host, settings, endpointConfiguration, _sendTransportProvider); configure?.Invoke(endpointConfigurator); BusConfigurationResult.CompileResults(endpointConfigurator.Validate()); endpointConfigurator.Apply(_builder); }
public static IBusControl Build(this IBusFactory factory) { ConfigurationResult result = BusConfigurationResult.CompileResults(factory.Validate()); try { return(factory.CreateBus()); } catch (Exception ex) { throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
/// <summary> /// Adds a Marten saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="connectionString">The Marten configuration string</param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <T> MartenRepository <T>(this ISagaRegistrationConfigurator <T> configurator, string connectionString) where T : class, ISaga { var martenConfigurator = new MartenSagaRepositoryConfigurator <T>(); martenConfigurator.Connection(connectionString); BusConfigurationResult.CompileResults(martenConfigurator.Validate()); configurator.Repository(x => martenConfigurator.Register(x)); return(configurator); }
/// <summary> /// Adds a Azure Table saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <T> AzureTableRepository <T>(this ISagaRegistrationConfigurator <T> configurator, Action <IAzureTableSagaRepositoryConfigurator <T> > configure = null) where T : class, ISaga { var sagaRepositoryConfigurator = new AzureTableSagaRepositoryConfigurator <T>(); configure?.Invoke(sagaRepositoryConfigurator); BusConfigurationResult.CompileResults(sagaRepositoryConfigurator.Validate()); configurator.Repository(x => sagaRepositoryConfigurator.Register(x)); return(configurator); }
/// <summary> /// Adds a Redis saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <T> RedisRepository <T>(this ISagaRegistrationConfigurator <T> configurator, Action <IRedisSagaRepositoryConfigurator <T> > configure = null) where T : class, ISagaVersion { var redisConfigurator = new RedisSagaRepositoryConfigurator <T>(); configure?.Invoke(redisConfigurator); BusConfigurationResult.CompileResults(redisConfigurator.Validate()); configurator.Repository(x => redisConfigurator.Register(x)); return(configurator); }
public HostReceiveEndpointHandle ConnectReceiveEndpoint(string queueName, Action <IAmazonSqsReceiveEndpointConfigurator> configure = null) { LogContext.SetCurrentIfNull(DefaultLogContext); var configuration = _hostConfiguration.CreateReceiveEndpointConfiguration(queueName, configure); BusConfigurationResult.CompileResults(configuration.Validate()); TransportLogMessages.ConnectReceiveEndpoint(configuration.InputAddress); configuration.Build(this); return(ReceiveEndpoints.Start(queueName)); }
public HostReceiveEndpointHandle ConnectReceiveEndpoint(string queueName, Action <IServiceBusReceiveEndpointConfigurator> configure = null) { LogContext.SetCurrentIfNull(DefaultLogContext); LogContext.Debug?.Log("Connect receive endpoint: {Queue}", queueName); var configuration = _hostConfiguration.CreateReceiveEndpointConfiguration(queueName, configure); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(this); return(ReceiveEndpoints.Start(configuration.Settings.Path)); }
/// <summary> /// Adds a Marten saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="connectionString">The Marten configuration string</param> /// <param name="configureOptions"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <T> MartenRepository <T>(this ISagaRegistrationConfigurator <T> configurator, string connectionString, Action <StoreOptions> configureOptions) where T : class, ISaga { var redisConfigurator = new MartenSagaRepositoryConfigurator <T>(); redisConfigurator.Connection(connectionString, configureOptions); BusConfigurationResult.CompileResults(redisConfigurator.Validate()); configurator.Repository(x => redisConfigurator.Register(x)); return(configurator); }
/// <summary> /// Configures the Cosmos Saga Repository /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <typeparam name="TSaga"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <TSaga> CosmosRepository <TSaga>(this ISagaRegistrationConfigurator <TSaga> configurator, Action <ICosmosSagaRepositoryConfigurator <TSaga> > configure) where TSaga : class, ISaga { var repositoryConfigurator = new CosmosSagaRepositoryConfigurator <TSaga>(); configure?.Invoke(repositoryConfigurator); BusConfigurationResult.CompileResults(repositoryConfigurator.Validate()); configurator.Repository(x => repositoryConfigurator.Register(x)); return(configurator); }
/// <summary> /// Adds a EntityFramework saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <typeparam name="TSaga"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <TSaga> EntityFrameworkRepository <TSaga>(this ISagaRegistrationConfigurator <TSaga> configurator, Action <IEntityFrameworkSagaRepositoryConfigurator <TSaga> > configure) where TSaga : class, ISaga { var entityFrameworkSagaRepositoryConfigurator = new EntityFrameworkSagaRepositoryConfigurator <TSaga>(); configure?.Invoke(entityFrameworkSagaRepositoryConfigurator); BusConfigurationResult.CompileResults(entityFrameworkSagaRepositoryConfigurator.Validate()); configurator.Repository(x => entityFrameworkSagaRepositoryConfigurator.Register(x)); return(configurator); }
/// <summary> /// Adds a Redis saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="connectionString"></param> /// <param name="configure"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <T> DapperRepository <T>(this ISagaRegistrationConfigurator <T> configurator, string connectionString, Action <IDapperSagaRepositoryConfigurator <T> > configure = null) where T : class, ISaga { var repositoryConfigurator = new DapperSagaRepositoryConfigurator <T>(connectionString); configure?.Invoke(repositoryConfigurator); BusConfigurationResult.CompileResults(repositoryConfigurator.Validate()); configurator.Repository(x => repositoryConfigurator.Register(x)); return(configurator); }
/// <summary> /// Adds a MongoDB saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <typeparam name="TSaga"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <TSaga> MongoDbRepository <TSaga>(this ISagaRegistrationConfigurator <TSaga> configurator, Action <IMongoDbSagaRepositoryConfigurator <TSaga> > configure = null) where TSaga : class, ISagaVersion { var mongoDbConfigurator = new MongoDbSagaRepositoryConfigurator <TSaga>(); configure?.Invoke(mongoDbConfigurator); BusConfigurationResult.CompileResults(mongoDbConfigurator.Validate()); configurator.Repository(mongoDbConfigurator.Register); return(configurator); }
/// <summary> /// Adds a Marten saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="connectionFactory"></param> /// <param name="configureOptions"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator <T> MartenRepository <T>(this ISagaRegistrationConfigurator <T> configurator, Func <NpgsqlConnection> connectionFactory, Action <StoreOptions> configureOptions) where T : class, ISaga { var martenConfigurator = new MartenSagaRepositoryConfigurator <T>(); martenConfigurator.Connection(connectionFactory, configureOptions); BusConfigurationResult.CompileResults(martenConfigurator.Validate()); configurator.Repository(x => martenConfigurator.Register(x)); return(configurator); }
public void CreateSubscriptionEndpoint(SubscriptionEndpointSettings settings, Action <IServiceBusSubscriptionEndpointConfigurator> configure) { if (!_configuration.TryGetHost(_host, out var hostConfiguration)) { throw new ConfigurationException("The host was not properly configured"); } var configuration = hostConfiguration.CreateSubscriptionEndpointConfiguration(settings); configure?.Invoke(configuration.Configurator); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(); }
HostReceiveEndpointHandle ConnectSubscriptionEndpoint(SubscriptionEndpointSettings settings, Action <IServiceBusSubscriptionEndpointConfigurator> configure) { LogContext.SetCurrentIfNull(DefaultLogContext); LogContext.Debug?.Log("Connect subscription endpoint: {Topic}/{SubscriptionName}", settings.Path, settings.Name); var configuration = _hostConfiguration.CreateSubscriptionEndpointConfiguration(settings, configure); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(this); return(ReceiveEndpoints.Start(configuration.Settings.Path)); }
public void CreateReceiveEndpoint(string queueName, Action <IServiceBusReceiveEndpointConfigurator> configure) { if (!_configuration.TryGetHost(_host, out var hostConfiguration)) { throw new ConfigurationException("The host was not properly configured"); } var configuration = hostConfiguration.CreateReceiveEndpointConfiguration(queueName); configure?.Invoke(configuration.Configurator); BusConfigurationResult.CompileResults(configuration.Validate()); configuration.Build(); }