using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using PARR.Core.Common.Interfaces; using PARR.Core.Common.Interfaces.RabbitServices; using PARR.DAL.InfluxDbServices; using PARR.Domain.Settings; using PARR.Infrastructure.Interval; using PARR.Infrastructure.Rabbit; using PARR.Infrastructure.Redis; using StackExchange.Redis; namespace PARR.Infrastructure { public static class DependencyInjection { /// /// Регистрация инфраструктурных сервисов /// /// /// /// public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration) { // тут регистрируем все внешние сервисы, Rabbit, Redis, Email... #region Rabbit services.AddHttpClient(); services.AddTransient(); #endregion #region Interval services.AddTransient(); #endregion #region Redis services.AddSingleton(sp => { // IConnectionMultiplexer - для нативных операций Redis var connectionString = configuration.GetConnectionString("RedisConnection"); return ConnectionMultiplexer.Connect(connectionString); }); services.AddStackExchangeRedisCache(opt => { opt.Configuration = configuration.GetConnectionString("RedisConnection"); }); services.AddSingleton(); #endregion #region InfluxDb var influxDbSettings = new InfluxDbSettings(); configuration.GetSection(nameof(InfluxDbSettings)).Bind(influxDbSettings); services.AddSingleton(influxDbSettings); services.AddTransient(); #endregion //services.AddTransient(); //services.AddTransient(); ////Redis (singleton) return services; } } }