feat(aihitMainSyncer): refactoring+изменение запуска Worker.
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user