using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using PARR.AIHITSyncer.Services; using PARR.AIHITSyncer.Settings; using PARR.BLL.Services.Interfaces; namespace PARR.AIHITSyncer { internal class AihitSyncer : IAihitSyncer { private readonly ILogger logger; private readonly IMqService mqService; private readonly MqSettings mqSettings; private readonly IServiceProvider serviceProvider; public AihitSyncer( ILogger logger, IMqService mqService, MqSettings mqSettings, IServiceProvider serviceProvider ) { this.logger = logger; this.mqService = mqService; this.mqSettings = mqSettings; this.serviceProvider = serviceProvider; } public void Start() { logger.LogInformation("Запуск сервиса синхронизации данных из АИХИТ и ПАРР."); //var isConnected = mqService.InitConsumer(mqSettings, SyncDataAsync); var isConnected = mqService.InitConsumer(mqSettings, async (string msg) => { using (var scope = serviceProvider.CreateScope()) { var syncerService = scope.ServiceProvider.GetService(); if (syncerService == null) throw new Exception("Не смог получить серивс ISyncerService, scope.ServiceProvider.GetService()"); await syncerService.SyncAsync(msg); //await Task.CompletedTask; } }); if (!isConnected) throw new Exception("Ошибка при подключении к RabbitMq"); } public void Stop() { mqService.Dispose(); } } }