feat(aihitMainSyncer): refactoring+изменение запуска Worker.

This commit is contained in:
Mikhail Kuznetsov
2025-11-19 11:52:41 +10:00
parent 629a487875
commit d486c72416
5 changed files with 117 additions and 81 deletions

View File

@@ -54,9 +54,7 @@ namespace PARR.AIHITMainLoader
logger.LogInformation("Запуск загрузки данных из АИХ ИТ.");
using (var scope = serviceProvider.CreateScope())
{
var aihitService = scope.ServiceProvider.GetService<IAihitService>();
if (aihitService == null)
throw new Exception($"Не найден сервис: {nameof(IAihitService)}");
var aihitService = scope.ServiceProvider.GetRequiredService<IAihitService>();
var services = GetServices(aihitService);
@@ -89,14 +87,21 @@ namespace PARR.AIHITMainLoader
int count = preparedDataList.Count;
int packageSize = loaderSettings.PackageSize;
if (packageSize <= 0)
{
logger.LogError("Некорректный размер пакета: {PackageSize}. Ожидалось > 0.", packageSize);
return;
}
var parts = count == 0 ? 0 : (count + packageSize - 1) / packageSize;
for (var i = 0; i < (count + packageSize - 1) / packageSize; i++)
for (var i = 0; i < parts; i++)
{
int start = i * packageSize;
int length = Math.Min(packageSize, count - start);
var batch = preparedDataList.GetRange(start, length).ToArray();
var sendResult = await mqService.SendAsync(mqSettings, batch.ToArray());
var sendResult = await mqService.SendAsync(mqSettings, batch);
if (sendResult.IsSuccess)
{
logger.LogInformation($"Данные переданы в RabbitMQ: {batch.Count()}");
@@ -106,7 +111,8 @@ namespace PARR.AIHITMainLoader
logger.LogError($"Ошибка при передаче данных в Rabbit, не переданные сообщения: {string.Join(", ", sendResult.NotSendMessages!)}");
}
}
} catch (Exception ex)
}
catch (Exception ex)
{
logger.LogError(ex, "Ошибка при выполнении загрузки данных из АИХ ИТ.");
}
@@ -115,13 +121,12 @@ namespace PARR.AIHITMainLoader
private List<Func<string, IEnumerable<IMainData>?>> GetServices(IAihitService service)
{
var serviceList = new List<Func<string, IEnumerable<IMainData>?>>();
serviceList.Add(service.GetCvkData);
serviceList.Add(service.GetPtkData);
serviceList.Add(service.GetRegionalEKData);
return serviceList;
return new()
{
service.GetCvkData,
service.GetPtkData,
service.GetRegionalEKData
};
}
}
}