public static ILinFxBuilder AddEventBus(this ILinFxBuilder builder, Action <EventBusOptions> optionsAction) { Check.NotNull(builder, nameof(builder)); Check.NotNull(optionsAction, nameof(optionsAction)); builder.Services.AddSingleton <IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>(); var options = new EventBusOptions(); optionsAction?.Invoke(options); options.ConfigureEventBus?.Invoke(builder, new EventBusOptionsBuilder(options)); return(builder); }
public static ILinFxBuilder AddElasticsearch(this ILinFxBuilder builder, Action <ElasticsearchOptions> optionsAction) { var options = new ElasticsearchOptions(); optionsAction?.Invoke(options); var node = new Uri(options.Host); var settings = new ConnectionSettings(node).DefaultIndex(options.Index); var client = new ElasticClient(settings); builder.Services.Add(ServiceDescriptor.Singleton <IElasticClient>(client)); return(builder); }
public static ILinFxBuilder AddEventStores( [NotNull] this ILinFxBuilder builder, [NotNull] Action <IServiceProvider, EventStoreOptionsBuilder> optionsAction, ServiceLifetime optionsLifetime = ServiceLifetime.Scoped) { Check.NotNull(builder, nameof(builder)); Check.NotNull(optionsAction, nameof(optionsAction)); AddCoreServices(builder.Services, optionsAction, optionsLifetime); builder.Services.AddDbContext <EventStoreContext>(); builder.Services.AddTransient <IEventStore, EventStoreManager>(); return(builder); }
public static ILinFxBuilder AddDatabase(this ILinFxBuilder builder, Action <DbConnectionOptions> optionsAction) { Check.NotNull(builder, nameof(builder)); //var factory = new DbConnectionFactory(connectionString, PostgreSqlProvider.Instance); //var config = new DapperExtensionsConfiguration(typeof(AutoClassMapper<>), new List<Assembly>(), new PostgreSqlDialect()); //var db = new Database(factory.Create(), new SqlGeneratorImpl(config)); //var factory = new DbConnectionFactory(connectionString, MySqlProvider.Instance); //var config = new DapperExtensionsConfiguration(typeof(AutoClassMapper<>), new List<Assembly>(), new MySqlDialect()); //return new Database(factory.Create(), new SqlGeneratorImpl(config)); builder.Services.AddTransient <IDatabase, Database>(); return(builder); }
public static ILinFxBuilder AddDapperExtensions(this ILinFxBuilder builder, Action setupAction) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (setupAction == null) { throw new ArgumentNullException(nameof(setupAction)); } //builder.Services.Configure(setupAction); //builder.Services.Add(ServiceDescriptor.Singleton<IDistributedCache, RedisCache>()); return(builder); }
public static ILinFxBuilder AddRabbitMQPersistentConnection(this ILinFxBuilder builder, Action <RabbitMqOptions> optionsAction) { var options = new RabbitMqOptions(); optionsAction?.Invoke(options); builder.Services.AddSingleton((Func <IServiceProvider, IRabbitMQPersistentConnection>)(sp => { var logger = sp.GetRequiredService <ILogger <DefaultRabbitMQPersistentConnection> >(); var factory = new ConnectionFactory { HostName = options.Host, UserName = options.UserName, Password = options.Password, }; return(new DefaultRabbitMQPersistentConnection(factory, logger)); })); return(builder); }
public static ILinFxBuilder AddRabbitMQ(this ILinFxBuilder builder, Action <RabbitMQOptions> optionsAction) { Check.NotNull(builder, nameof(builder)); Check.NotNull(optionsAction, nameof(optionsAction)); var options = new RabbitMQOptions(); optionsAction?.Invoke(options); builder.Services.AddSingleton <IRabbitMQPersistentConnection>(sp => { var logger = sp.GetRequiredService <ILogger <DefaultRabbitMQPersistentConnection> >(); var factory = new ConnectionFactory { UserName = options.UserName, Password = options.Password, HostName = options.Host, }; return(new DefaultRabbitMQPersistentConnection(factory, logger)); }); return(builder); }
public static ILinFxBuilder AddEventBusRabbitMQ(this ILinFxBuilder builder, Action <EventBusOptions> optionsAction) { Check.NotNull(builder, nameof(builder)); Check.NotNull(optionsAction, nameof(optionsAction)); //Options and extension service var options = new EventBusOptions(); optionsAction?.Invoke(options); builder.Services.AddSingleton <IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>(); builder.Services.AddSingleton <IEventBus, EventBusRabbitMQ>(sp => { var logger = sp.GetRequiredService <ILogger <EventBusRabbitMQ> >(); var rabbitMQPersistentConnection = sp.GetRequiredService <IRabbitMQPersistentConnection>(); var iServiceScopeFactory = sp.GetRequiredService <IServiceScopeFactory>(); var eventBusSubcriptionsManager = sp.GetRequiredService <IEventBusSubscriptionsManager>(); return(new EventBusRabbitMQ(logger, rabbitMQPersistentConnection, eventBusSubcriptionsManager, iServiceScopeFactory, options)); }); return(builder); }
/// <summary> /// Adds Redis distributed caching services to the specified <see cref="ILinFxBuilder" />. /// </summary> /// <param name="builder">The <see cref="ILinFxBuilder" /> to add services to.</param> /// <param name="setupAction">An <see cref="Action{RedisCacheOptions}"/> to configure the provided /// <see cref="RedisCacheOptions"/>.</param> /// <returns>The <see cref="ILinFxBuilder"/> so that additional calls can be chained.</returns> public static ILinFxBuilder AddDistributedRedisCache(this ILinFxBuilder builder, Action <RedisCacheOptions> setupAction) { builder.Services.AddDistributedRedisCache(setupAction); return(builder); }
public EventBusBuilder(ILinFxBuilder fx) { Fx = fx; }
public static EventBusOptionsBuilder UseRabbitMQ(this EventBusOptionsBuilder optionsBuilder, ILinFxBuilder builder, Action <EventBusRabbitMqOptions> optionsAction) { Check.NotNull(optionsAction, nameof(optionsAction)); var options = new EventBusRabbitMqOptions(); optionsAction?.Invoke(options); builder.Services.AddSingleton((Func <IServiceProvider, IRabbitMQPersistentConnection>)(sp => { var logger = sp.GetRequiredService <ILogger <DefaultRabbitMQPersistentConnection> >(); var factory = new ConnectionFactory { UserName = options.UserName, Password = options.Password, HostName = options.Host, }; return(new DefaultRabbitMQPersistentConnection((IConnectionFactory)factory, (ILogger <DefaultRabbitMQPersistentConnection>)logger)); })); builder.Services.AddSingleton <IEventBus, EventBusRabbitMQ>(sp => { var logger = sp.GetRequiredService <ILogger <EventBusRabbitMQ> >(); var rabbitMQPersistentConnection = sp.GetRequiredService <IRabbitMQPersistentConnection>(); var iServiceScopeFactory = sp.GetRequiredService <IServiceScopeFactory>(); var eventBusSubcriptionsManager = sp.GetRequiredService <IEventBusSubscriptionsManager>(); return(new EventBusRabbitMQ(logger, rabbitMQPersistentConnection, eventBusSubcriptionsManager, iServiceScopeFactory, optionsBuilder.Options)); }); return(optionsBuilder); }
public static EventBusOptionsBuilder UseRabbitMQ(this EventBusOptionsBuilder optionsBuilder, ILinFxBuilder fx, Action <RabbitMQOptions> optionsAction) { Check.NotNull(optionsAction, nameof(optionsAction)); var options = new RabbitMQOptions(); optionsAction?.Invoke(options); fx.AddRabbitMQ(x => { x.Host = options.Host; x.UserName = options.UserName; x.Password = options.Password; }); fx.Services.AddSingleton <IEventBus, EventBusRabbitMQ>(sp => { var logger = sp.GetRequiredService <ILogger <EventBusRabbitMQ> >(); var rabbitMQPersistentConnection = sp.GetRequiredService <IRabbitMQPersistentConnection>(); var iServiceScopeFactory = sp.GetRequiredService <IServiceScopeFactory>(); var eventBusSubcriptionsManager = sp.GetRequiredService <IEventBusSubscriptionsManager>(); return(new EventBusRabbitMQ(logger, rabbitMQPersistentConnection, eventBusSubcriptionsManager, iServiceScopeFactory, optionsBuilder.Options)); }); return(optionsBuilder); }