private static void ConfigureServices(ConnectionOptions options) { var builder = new ConfigurationBuilder() #if DEBUG .SetBasePath(Path.Combine(Environment.CurrentDirectory, "..", "..", "..")) #endif #if RELEASE .SetBasePath(Environment.CurrentDirectory) #endif .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); var configuration = builder.Build(); DiConfigurator.SetUp(services => { services.AddSingleton(new MongoClient(options.ConnectionString)); services.AddSingleton <IMongoDatabase>(a => a.GetService <MongoClient>().GetDatabase(options.DatabaseName)); services.AddSingleton <TransactionsDbProcessor>(); services.AddSingleton(new CancellationTokenSource()); services.AddDomain(); services.AddSingleton(options); //Entity framework services.AddDbContext <DatabaseContext>(a => { a.UseNpgsql(configuration["ConnectionStrings:SenseMiningStore"]); }); }); }
private static void ConfigureServices() { var builder = new ConfigurationBuilder() #if DEBUG .SetBasePath(Path.Combine(Environment.CurrentDirectory, "..", "..", "..")) #endif #if RELEASE .SetBasePath(Environment.CurrentDirectory) #endif .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); var configuration = builder.Build(); DiConfigurator.SetUp(services => { services.AddDomain(); //Entity framework services.AddDbContext <DatabaseContext>(a => { a.UseNpgsql(configuration["ConnectionStrings:SenseMiningStore"]); }); services.AddScoped <CancellationTokenSource>(); //MassTransit services.AddScoped <TransactionsQueueConsumer>(); services.AddMassTransit(c => { c.AddConsumer <TransactionsQueueConsumer>(); }); services.AddSingleton(provider => Bus.Factory.CreateUsingRabbitMq( cfg => { var host = cfg.Host(new Uri(configuration["RabbitMq:Host"]), hostConfigurator => { hostConfigurator.Username(configuration["RabbitMq:UserName"]); hostConfigurator.Password(configuration["RabbitMq:Password"]); hostConfigurator.Heartbeat(10); }); cfg.ReceiveEndpoint(host, e => { e.PrefetchCount = 16; e.UseMessageRetry(x => x.Interval(2, 100)); e.Durable = false; e.LoadFrom(provider); EndpointConvention.Map <TransactionsQueueConsumer>(e.InputAddress); }); })); services.AddSingleton <IBus>(provider => provider.GetRequiredService <IBusControl>()); services.AddSingleton <IHostedService, BusService>(); }); }