Настройки импорта объектов и участников в файле конфигурации

В файле конфигурации appsettings.json в секции Custom вы можете определить следующие настройки импорта объектов и участников (параметры поддерживают переопределение):

  • ImportTemplateFileValueSeparator — формат разделителя значений в файле шаблона импорта дел:
    • По умолчанию — запятая
    • При изменении параметра в уже сгенерированных шаблонах импорта значение не будет пересчитано — для перегенерации шаблона необходимо пересохранить тип объекта
  • ImportObjectsRepeatableValuesSeparatorInImportFile — формат разделителя значений из мультистрок и мультиблоков (по умолчанию — точка с запятой).
  • ImportObjectsTimeout— таймаут импорта (по умолчанию не задан).
  • ImportObjectsBatchSize— максимальное количество строк, подготавливаемых к импорту, за один раз:
    • Значение параметра также используется для конфигурации с MS SQL для отправки данных на SQL-сервер
    • По умолчанию — 1 000
  • ImportObjectsMaxRowsInImportFile — максимальное количество строк в файле импорта:
    • По умолчанию — 10 000
    • Доступно отключить ограничение, указав значение 0
{
  "Custom": {
    // ... other settings
    "ImportTemplateFileValueSeparator": ",", 
// символ разделителя значений для шаблона импорта. По умолчанию ','
    "ImportObjectsTimeout": "00:00:00", 
// таймаут импорта данных из CSV файла. По умолчанию нет.
    "ImportObjectsBatchSize": 1000, 
// Количество строк в каждой партии. 
В конце каждой партии строки в партии отправляются на SQL сервер. 
Используется в конфигурации с MS SQL. По умолчанию 1000. 
Так же этот параметр используется для выборки импортированных данных по пачкам, для дальнейшей публикации их в брокере.
    "ImportObjectsMaxRowsInImportFile": 10000, 
// Допустимое максимально количество строк в CSV файле с данными. 
Если в файле больше заданного количества, импорт не производиться. 
0 - выключает ограничение. По умолчанию 10000
    "ImportObjectsRepeatableValuesSeparatorInImportFile": ";" 
// символ разделителя значений для значений мультистрок/ мультиблоков. 
По умолчанию ';'
  }
}

Логирование при импорте

Поскольку при импорте записываются выполняемые операции, для успешного формирования итогового файла логов в конфигурационном файле nlog.config обязательно должна быть объявлена переменная baseLogDirectory в секции nlog:

<nlog <!-- .... --> >
  <variable name="baseLogDirectory" value="${basedir}logs/${hostRender}" />

Принудительное завершение сессии импорта

В секции Custom файла настройки конфигурации доступен параметр ImportObjectsScheduledStopDelay, где вы можете указать время, по истечении которого сессия импорта будет автоматически завершена:

  • Время указывается в формате hh:mm:ss и отсчитывается с момента запуска импорта.
  • По умолчанию значение не установлено — автоматическое завершение импорта не выполняется.

При автоматическом завершении сессии импорта:

  • Статус импорта будет изменен на Остановлен.
  • Уведомление в Case.one не отображается.

Если в результате автоматического завершения сессии импорта произошла ошибка, информация об ошибке будет записана в общем логе приложения:

 "Custom": {
    "ImportObjectsScheduledStopDelay": "01:00:00" //По умолчанию параметр не задан, автоматическое завершение отключено.
}

Настройки очереди асинхронного создания объектов в RabbitMQ 

В RabbitMQ предусмотрена отдельная очередь сообщений с именем ImportObject и категорией import_object для асинхронного создания объектов. 

При необходимости изменения параметров очереди добавьте настройки в секцию OldRabbitMQ::Topology

  • Если у вас многодоменное приложение, откажитесь от использования динамического значения %host% в именах.
  • Конфигурация по умолчанию не подходит для SaaS — уберите имя инстанса (%host%) из имен очередей в секциях Queues и Bindings.

Пример настройки очереди для секции OldRabbitMQ::Topology:

"Topology": {
    /* ... other settings ... */
    "Queues": {
        /* ... other queues ... */
        "ImportObject": {
            "Workers": {
                "Count": 1,
                "Retry": {
                    "Attempts": 1
                }
            }
        }
    }
}

Импорт объектов является ресурсозатратной операцией, которая может оказывать влияние на работу всей системы в целом. Увеличение количества обработчиков позволит ускорить работу импорта, но может оказать негативный эффект на операционную деятельность пользователей приложения.   Не рекомендуется задавать количество обработчиков больше, чем количество физических ядер CPU на сервере.


Также предусмотрена возможность настройки очереди для секции OldRabbitMQ::Queues, но настоятельно рекомендуем использовать секцию OldRabbitMQ::Topology:

{
    "Host": "%host%",
    "Category": "import_object",
    "Type": "%type%",
    "Handler": "%handler%",
    "Name": "%host%.%category%",
    "Workers": {
        "Count": 1,
        "Retry": {
            "Attempts": 1
        }         
    },
    "Arguments": {
        "x-consumer-timeout": 7200000,
        "x-queue-mode": "lazy"
    },
    "Final": true
}