.. _rest_uploader_config: Конфигурация модуля REST-Uploader (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: асинхронная загрузка данных из источников, настройка подключения к ядру витрины (секция: ``prostore``), а также другие настройки необходимые для корректной работы модуля. .. _rest_uploader_application_yml: Пример файла application.yml ############################## В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml http-server: port: ${SERVER_PORT:8081} executor: reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20} file-size: restriction: ${SEND_FILE_SIZE_RESTRICTION:512} environment: # Название окружения name: ${ENVIRONMENT_NAME:test} data-storage: compress: ${DATA_STORAGE_COMPRESS:zstd} # zstd/none редактируется синхронно для модулей rest-uploader/data-uploader!!! compression-ratio: ${DATA_STORAGE_COMPRESSION_RATIO:4} # допустимый диапазон [-7;22] где -7 самый быстрый, а 22 наибольшее сжатие type: ${DATA_STORAGE_TYPE:dir} # redis|dir|s3|prostore # Директория хранения файлов для типа dir dir: ${DATA_STORAGE_DIR:/upload/data} s3: endpoint: ${S3_ENDPOINT:http://127.0.0.1:9000/} region: ${S3_REGION:} bucket: ${S3_BUCKET:data} # Имя бакета access-key: ${S3_USER:minioadmin} # Пользователь, под которым происходит взаимодействие с s3 secret-key: ${S3_PASSWORD:minioadmin} # Пароль пользователя для взаимодействия с s3 conditions: # включение ФЛК и поведение при обнаружении ошибок mode: warning # период хранения журналов ошибок save-time: 1d # путь хранения журналов ошибок на общем диске: save-path: /tmp/rest-uploader/reports # путь к хранению правил в Zookeeper zookeeper-path: rest-uploader/conditions # Таймаут обработки запроса. 0 - таймаут отключен rest-timeout: ${CONDITIONS_REST_TIMEOUT:60s} # период жизни группы save_group_time: 1d validation: # таймаут выполнения асинхронной проверки validation-timeout: 1h # таймаут получения сообщений из redis (используется при persistence-mode: zookeeper&redis) # значение должно быть меньше чем redis.net-client-options.tcp-user-timeout poll-timeout: 15s # таймаут периодического опроса prostore для получения данных из очереди (используется при persistence-mode: prostore) poll-interval: 5s # количество корутин асинхронной валидации max-concurrent-handle: 1 # размер порции вычитки сообщений из redis batch-size: 1 # признак выполнения проверки кодировки charset-check-enabled: true # допустимые кодировки для механизма автоопределения valid-charsets: [ UTF-8, US-ASCII, TIS-620] health-check: # период жизни флага активности timeout-active: 3m # период обновления статуса publish-period: 30s zookeeper: connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000} chroot: ${ZOOKEEPER_DS_CHROOT:/adapter} retry-count: 3 retry-base-sleep-time-ms: 1_000 persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore, zookeeper&redis prostore-rest-client: # требуется синхронно менять в приложениях rest-uploader и data-uploader !!! persistence-datamart: ${PERSISTENCE_DATAMART:persistence} datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора table-conditions: ${PERSISTENCE_TABLE_CONDITIONS:rest_uploader_conditions} table-ids: ${PERSISTENCE_TABLE_IDS:rest_uploader_ids} # Таблица активных экземляров сервиса rest-uploader (используется при persistence-mode: prostore) table-rest-uploader-health-check: ${PERSISTENCE_TABLE_HEALTH_CHECK:rest_uploader_health_check} # Таблица групп файлов (используется при persistence-mode: prostore) table-group-info: ${PERSISTENCE_TABLE_GROUP_INFO:group_info} # Таблица данных о файлах в группе (используется при persistence-mode: prostore) table-group-content: ${PERSISTENCE_TABLE_GROUP_CONTENT:group_content} # Таблица уникальных значений полей в группе (используется при persistence-mode: prostore) table-group-uniq: ${PERSISTENCE_TABLE_GROUP_UNIQ:group_uniq} # Таблица очереди файлов на ФЛК (используется при persistence-mode: prostore) table-validation-queue: ${PERSISTENCE_TABLE_VALIDATION_QUEUE:validation_queue} # Таблица очереди файлов на загрузку (используется при persistence-mode: prostore) table-validation-complete: ${PERSISTENCE_TABLE_VALIDATION_COMPLETE:validation_complete} # Таблица статусов запросов (используется при persistence-mode: prostore) table-requests-status: ${PERSISTENCE_TABLE_STATUS:status} # Таблица с файлами (используется при persistence-mode: prostore) table-files: ${PERSISTENCE_TABLE_FILES:files} max-retry: 3 # количество попыток выполнить запрос, в случае переключения datasource recovery-await-timeout: 10s # таймаут ожидания восстановления datasource recovery-retry-delay: 1s # задержка между попытками восстановить datasource host: ${PS_HOST:localhost} port: ${PS_PORT:9090} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} migration: enabled: ${MIGRATION_ENABLE:true} response: time-to-live: ${RESPONSE_TTL:10h} # Период хранения информации о статусе запроса control: delta: # подключение возможности управления дельтами от клиента. Управление дельтами от клиента допускается только при настройках # delta-> creating-delta-on-upload-request=disable у модулей data-uploader/podd-adapter-mppw enable: ${CONTROL_DELTA_ENABLE:true} redis: type: ${REDIS_TYPE:STANDALONE} connection-string: ${REDIS_CONNECTION_STRING:redis://localhost:6379} password: ${REDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81} max-pool-size: ${REDIS_MAX_POOL_SIZE:6} max-pool-waiting: ${REDIS_MAX_POOL_WAITING:24} max-waiting-handlers: ${REDIS_MAX_WAITING_HANDLERS:32} net-client-options: tcp-user-timeout-duration: 30s idle-timeout-duration: 30s auth: secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C} enabled: ${AUTH_ENABLED:true} access-list-path: rest-uploader/ids metrics: port: ${METRICS_PORT:9837} # Настройки парсера csv файлов csv-parser: # Символ разделителя значений separator: ${CSV_PARSER_SEPARATOR:;} # Символ кавычки quote-char: ${CSV_PARSER_QUOTE_CHAR:"} # Символ экранирования значений escape-char: ${CSV_PARSER_ESCAPE_CHAR:'} # Настройка интерпретации значений как null. Допустимые значения: # - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;; # - EMPTY_QUOTES - пустые кавычки, например ;""; # - BOTH - оба варианта # - NEITHER - никогда. Пустая строка всегда определяется как пустая строка field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS} # Настройки модуля сбора информации о компонентах витрины component-info: enabled: true # DataSource Prostore datasource: '' # Схема Prostore datamart: component_info # Имя таблицы для записи информации о компоненте table-name: component_info # Период попыток создания схемы, при неуспехе create-table-period: 60s # Период публикации health-check publish-period: 60s # Период после которого компонент считается неактивным при отсутствии health-check timeout-active: 300s # Список элементов конфига маскируемых при отправке, # если указан узловой элемент, то маскируются все вложенные в него элементы secrets: - redis.password # Настройки числа повторов и задержек в случае ошибок retries: # Задержка перед повторной попыткой повтора в случае ошибки удаления delete-delay: 1m # Число попыток удаления файла в случае ошибки удаления delete-retries: 10 # Задержка перед повторной попыткой повтора в случае ошибки изменения статуса status-change-delay: 1m # Число попыток установить статус обработки ФЛК в случае ошибки изменения статуса status-change-retries: 1000000 Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации REST-uploader осуществляется путем редактирования параметров настроек в файле ``application.yml``, где настраиваются секции: - ``http-server`` - указывается порт сервера; - ``executor`` - настраивается размер пула для запросов; - ``file-size`` - настраиваются ограничения на размер загружаемого файла; - ``environment`` - настройки окружения; - ``data-storage`` - директория хранения файлов для типа ``dir``; - ``conditions`` - включение форматно-логического контроля и поведение при обнаружении ошибок; - ``zookeeper`` - настройки подключения к Zookeeper; - ``persistence-mode`` - настройки хранения данных; - ``prostore-api-client`` - блок параметров конфигурирования взаимодействия с Prostore; - ``migration`` - настройки миграции; - ``response`` - настройка периода хранения информации о статусе запроса; - ``control`` - подключение возможности управления дельтами от клиента; - ``redis`` - настройка подключения к Redis; - ``auth``- указывается секрет для валидации токенов; - ``metrics`` - настройка получения метрик; - ``csv-parser`` - настройка парсинга CSV; - ``component-info`` - настройки модуля сбора информации о компонентах витрины. Секция http-server ################### В секции ``http-server`` указывается порт веб-сервера. Например: .. code-block:: yaml http-server: port: ${SERVER_PORT:8081} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``SERVER_PORT:8081``. Секция executor ############### Секция ``executor`` предназначена для указания размера пула для запросов. Например: .. code-block:: yaml executor: reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20} **Параметры настроек** - ``reader-pool-size`` - Размер пула для запросов, например ``EXECUTOR_READER_POOL_SIZE:20`` Секция file-size ################# В секции ``file-size`` можно настраивать ограничения на размер загружаемого файла. Например: .. code-block:: yaml file-size: restriction: ${SEND_FILE_SIZE_RESTRICTION:512} **Параметры настроек** - ``file-size-restriction`` - ограничение на размер загружаемого файла, например ``SEND_FILE_SIZE_RESTRICTION:512``. Секция environment ################## Секция ``environment`` предназначена для настройки среды окружения. Например: .. code-block:: yaml environment: name: ${ENVIRONMENT_NAME:test} **Параметры настроек** - ``name`` - Название окружения, например ``ENVIRONMENT_NAME:test``. Секция data-storage ####################### В секции ``data-storage`` указывается директория хранения файлов для типа ``dir``. Например: .. code-block:: yaml data-storage: compress: ${DATA_STORAGE_COMPRESS:zstd} # zstd/none compression-ratio: ${DATA_STORAGE_COMPRESSION_RATIO:4} # допустимый диапазон [-7;22] где -7 самый быстрый, а 22 наибольшее сжатие type: ${DATA_STORAGE_TYPE:dir} # redis|dir|s3|prostore # Директория хранения файлов для типа dir dir: ${DATA_STORAGE_DIR:/upload/data} s3: endpoint: ${S3_ENDPOINT:http://127.0.0.1:9000/} bucket: ${S3_BUCKET:data} # Имя бакета region: ${S3_REGION:} access-key: ${S3_USER:minioadmin} # Пользователь, под которым происходит взаимодействие с s3 secret-key: ${S3_PASSWORD:minioadmin} # Пароль пользователя для взаимодействия с s3 **Параметры настроек** - ``compress`` - настройки сжатия директории хранения файлов, например ``DATA_STORAGE_COMPRESS:zstd``; - ``type`` - тип файлов, например ``DATA_STORAGE_TYPE:dir`` (возможные значения: redis / dir / s3); - ``dir`` - директория хранения файлов для типа dir, например ``DDATA_STORAGE_DIR:/upload/data``; - ``s3`` - настройки облачного хранилища S3; - ``endpoint`` - адрес конечной точки, например ``S3_ENDPOINT:http://127.0.0.1:9000/``; - ``bucket`` - имя бакета, например ``S3_BUCKET:data``; - ``region`` - регион хранилища; - ``access-key`` - пользователь, под которым происходит взаимодействие с s3, например ``S3_USER:minioadmin``; - ``secret-key``- пароль пользователя для взаимодействия с s3, например ``S3_PASSWORD:minioadmin``. .. note:: Блок ``compress`` редактируется синхронно для модулей REST-Uploader/DATA-Uploader Секция conditions ################# В секции ``conditions`` - реализована возможность включения форматно-логического контроля и настройки поведения при обнаружении ошибок. Например: .. code-block:: yaml conditions: # включение ФЛК и поведение при обнаружении ошибок mode: warning # период хранения журналов ошибок save-time: 1d # путь хранения журналов ошибок на общем диске: save-path: /tmp/rest-uploader/reports # путь к хранению правил в Zookeeper zookeeper-path: rest-uploader/conditions # Таймаут обработки запроса. 0 - таймаут отключен rest-timeout: ${CONDITIONS_REST_TIMEOUT:60s} # период жизни группы save_group_time: 1d validation: # таймаут выполнения асинхронной проверки validation-timeout: 1h # таймаут получения сообщений из redis (используется при persistence-mode: zookeeper&redis) # значение должно быть меньше чем redis.net-client-options.tcp-user-timeout poll-timeout: 15s # таймаут периодического опроса prostore для получения данных из очереди (используется при persistence-mode: prostore) poll-interval: 5s # количество корутин асинхронной валидации max-concurrent-handle: 1 # размер порции вычитки сообщений из redis batch-size: 1 # признак выполнения проверки кодировки charset-check-enabled: true # допустимые кодировки для механизма автоопределения valid-charsets: [ UTF-8, US-ASCII, TIS-620] health-check: # период жизни флага активности timeout-active: 3m # период обновления статуса publish-period: 30s **Параметры настроек** - ``mode`` - включение ФЛК и поведение при обнаружении ошибок, например ``warning``; - ``save-time`` - период хранения журналов ошибок, например ``1d``; - ``save-path`` - путь хранения журналов ошибок на общем диске, например ``/tmp/rest-uploader/reports``; - ``zookeeper-path`` - путь к хранению правил в Zookeeper, например ``rest-uploader/conditions``; - ``rest-timeout`` - таймаут обработки запроса, например ``60s``, ``0`` - таймаут отключен; - ``save_group_time`` - период жизни группы, например ``1d``; - ``validation-timeout`` - таймаут выполнения асинхронной проверки, например ``1h``; - ``poll-timeout`` - таймаут получения сообщений из Redis (используется при persistence-mode: zookeeper&redis) ``15s``, значение должно быть меньше чем redis.net-client-options.tcp-user-timeout; - ``poll-interval`` - таймаут периодического опроса Prostore для получения данных из очереди (используется при persistence-mode: prostore); - ``max-concurrent-handle`` - количество корутин асинхронной валидации, например ``1``; - ``batch-size`` - размер порции вычитки сообщений из rRdis, например ``1``; - ``charset-check-enabled`` - признак выполнения проверки кодировки, например ``true``; - ``valid-charsets`` - допустимые кодировки для механизма автоопределения, например ``UTF-8, US-ASCII, TIS-620``; - ``timeout-active`` - период жизни флага активности, например ``3m``; - ``publish-period`` - период обновления статуса, например ``30s``; Режимы настройки ``mode`` ****************************** Для настройки ``mode`` реализованы режимы: ``skip_string`` 1. При необходимости пропуска строк формируется обновленный файл и сохраняется в queue с прежним ключом, после проверки всего файла; 2. Подтверждается чтение комплексной записи из stream ``validation_queue``, которая затем удаляется из стрима; 3. Размещается запись в list с именем ``validation_complete``; 4. Записывается статус 0 – Буферизирован; 5. В зависимости от наличия ``group_id`` в комплексной записи: - при отсутствии ``group_id`` – завершается обработка файла; - при наличии ``group_id`` – обновляется статус в groupContent_[group_id] и выполняется проверка комплектности группы в соответствии с шагами 3-6 Журнал по группе файлов. ``warning`` 1. Подтверждается чтение комплексной записи из stream ``validation_queue`` и удаляется из стрима; 2. Размещается запись в list с именем ``validation_complete``; 3. Записывается статус 0- Буферизирован; 4. В зависимости от наличия ``group_id`` в комплексной записи: - при отсутствии ``group_id`` - завершает обработку файла; - при наличии ``group_id`` - обновляет статус в groupContent_[group_id] и выполняет проверка комплектности группы в соответствии с шагами 3-6 Журнал по группе файлов. ``skip_file``/ ``skip_on_first_error`` 1. Подтверждается чтение комплексной записи из stream ``validation_queue``, которая затем удаляется из стрима; 2. Удаляется файл из hset queue по ключу; 3. Записывается статус 7 – Ошибки ФЛК; 4. В зависимости от наличия ``group_id`` в комплексной записи: - при отсутствии ``group_id`` – завершается обработка файла; - при наличии ``group_id`` – обновляется статус в groupContent_[group_id] и проверяется комплектность группы в соответствии с шагами 3-6 Журнал по группе файлов. ``skip_string_except_last`` пропускаются строки не прошедшие ФЛК по уникальности кроме последней 1. При необходимости пропуска строк формируется обновленный файл и сохраняется в queue с прежним ключом, после проверки всего файла; 2. Подтверждается чтение комплексной записи из stream ``validation_queue``, которая затем удаляется из стрима; 3. Размещается запись в list с именем ``validation_complete``; 4. Записывается статус 0 – Буферизирован; 5. В зависимости от наличия ``group_id`` в комплексной записи: - при отсутствии ``group_id`` – завершается обработка файла; - при наличии ``group_id`` – обновляется статус в groupContent_[group_id] и выполняется проверка комплектности группы в соответствии с шагами 3-6 Журнал по группе файлов. Секция Zookeeper ################# В секции ``zookeeper`` указываются параметры настроек к Zookeeper. Например: .. code-block:: yaml zookeeper: connect-string: ${ZOOKEEPER_DS_ADDRESS:localhost} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000} retry-count: 3 retry-base-sleep-time-ms: 1_000 **Параметры настроек** - ``connect-string`` - Подключение к Zookeeper DS, например ``ZOOKEEPER_DS_ADDRESS:localhost``; - ``connection-timeout-ms`` - Zookeeper DS таймаут подключения, например ``ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000``; - ``session-timeout-ms`` - Zookeeper DS таймаут сессии, например ``ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000``; - ``retry-count`` - количество попыток подключения, например ``3``. Секция persistence-mode ############################ В секции ``persistence-mode`` указывается настройка хранения данных: или в Prostore или в Zookeeper. в случае выбора Prostore автоматически создаются необходимые таблицы. Например: .. code-block:: yaml persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore | zookeeper **Параметры настроек** - ``persistence-mode`` - настройка хранения данных, например ``PERSISTENCE_MODE:prostore``. Секция prostore-rest-client ############################## В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с Prostore. Например: .. code-block:: yaml prostore-rest-client: # требуется синхронно менять в приложениях rest-uploader и data-uploader !!! persistence-datamart: ${PERSISTENCE_DATAMART:persistence} datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора table-conditions: ${PERSISTENCE_TABLE_CONDITIONS:rest_uploader_conditions} table-ids: ${PERSISTENCE_TABLE_IDS:rest_uploader_ids} # Таблица активных экземляров сервиса rest-uploader (используется при persistence-mode: prostore) table-rest-uploader-health-check: ${PERSISTENCE_TABLE_HEALTH_CHECK:rest_uploader_health_check} # Таблица групп файлов (используется при persistence-mode: prostore) table-group-info: ${PERSISTENCE_TABLE_GROUP_INFO:group_info} # Таблица данных о файлах в группе (используется при persistence-mode: prostore) table-group-content: ${PERSISTENCE_TABLE_GROUP_CONTENT:group_content} # Таблица уникальных значений полей в группе (используется при persistence-mode: prostore) table-group-uniq: ${PERSISTENCE_TABLE_GROUP_UNIQ:group_uniq} # Таблица очереди файлов на ФЛК (используется при persistence-mode: prostore) table-validation-queue: ${PERSISTENCE_TABLE_VALIDATION_QUEUE:validation_queue} # Таблица очереди файлов на загрузку (используется при persistence-mode: prostore) table-validation-complete: ${PERSISTENCE_TABLE_VALIDATION_COMPLETE:validation_complete} # Таблица статусов запросов (используется при persistence-mode: prostore) table-requests-status: ${PERSISTENCE_TABLE_STATUS:status} # Таблица с файлами (используется при persistence-mode: prostore) table-files: ${PERSISTENCE_TABLE_FILES:files} max-retry: 3 # количество попыток выполнить запрос, в случае переключения datasource recovery-await-timeout: 10s # таймаут ожидания восстановления datasource recovery-retry-delay: 1s # задержка между попытками восстановить datasource host: ${PS_HOST:localhost} port: ${PS_PORT:9090} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} **Параметры настроек** - ``persistence-datamart`` - датамарт, где будут располагаться таблицы хранения данных, например ``PERSISTENCE_DATAMART:persistence``. Используется при persistence-mode = ``prostore``. - ``datasource`` - по умолчанию пусто, в таком случае берется единственный датасорс из настроек Prostore; - ``table-conditions`` - условия таблиц, например ``PERSISTENCE_TABLE_CONDITIONS:rest_uploader_conditions``; - ``table-ids`` - настройки идентификаторов таблиц, например ``PERSISTENCE_TABLE_IDS:rest_uploader_ids``; - ``table-rest-uploader-health-check`` - таблица с health-check, например ``PERSISTENCE_TABLE_HEALTH_CHECK:rest_uploader_health_check``; - ``table-group-info`` - таблица групп файлов, например ``PERSISTENCE_TABLE_GROUP_INFO:group_info``; - ``table-group-content`` - таблица данных о файлах в группе, например ``PERSISTENCE_TABLE_GROUP_CONTENT:group_content``; - ``table-group-uniq`` - таблица уникальных значений полей в группе, например ``PERSISTENCE_TABLE_GROUP_UNIQ:group_uniq``; - ``table-validation-queue`` - таблица очереди файлов на ФЛК, например ``PERSISTENCE_TABLE_VALIDATION_QUEUE:validation_queue``; - ``table-validation-complete`` - таблица очереди файлов на загрузку, например ``PERSISTENCE_TABLE_VALIDATION_COMPLETE:validation_complete``; - ``table-requests-status`` - таблица хранения статусов запросов. например ``PERSISTENCE_STATUS_TABLE:status``; - ``table-files`` - таблица хранения данных файлов, например ``PERSISTENCE_FILES_TABLE:files``; - ``max-retry`` - количество попыток выполнить запрос, в случае переключения datasource, например ``3``; - ``recovery-await-timeout`` - таймаут ожидания восстановления datasource, например ``10s``; - ``recovery-retry-delay`` - задержка между попытками восстановить datasource, например ``1s``; - ``host`` - адрес Prostore, например ``PS_HOST:t5-prostore-01.ru-central1.internal``; - ``port`` - порт Prostore, например ``PS_PORT:9195``; - ``max-pool-size`` - максимальное число подключений к Prostore, например ``PS_MAX_POOL_SIZE:8``. Секция migration ################ В секции ``migration`` настраиваются миграции Zookeeper для задачи бекапирования. Например: .. code-block:: yaml migration: enabled: ${MIGRATION_ENABLE:false} **Параметры настроек** - ``enabled`` - подключение миграции, например ``{MIGRATION_ENABLE:false}``. Секция response ################## В секции ``response`` указывается период хранения информации о статусе запроса. Например: .. code-block:: yaml response: time-to-live: ${RESPONSE_TTL:10h} **Параметры настроек** - ``time-to-live`` - период хранения информации о статусе запроса, например ``ESPONSE_TTL:10h``. Секция control ################ Секция ``control`` определяет возможности управления дельтами от клиента. Управление дельтами от клиента допускается только при настройках delta-> ``creating-delta-on-upload-request=disable`` у модулей DATA-Uploader и podd-adapter-mppw. Например: .. code-block:: yaml control: delta: enable: ${CONTROL_DELTA_ENABLE:true} **Параметры настроек** - ``enable`` - подключение возможности управления дельтами от клиента, например ``CONTROL_DELTA_ENABLE:true``. Секция redis ############ Секция ``redis`` определяет настройки подключения к Redis. Например: .. code-block:: yaml redis: type: ${REDIS_TYPE:STANDALONE} connection-string: ${REDIS_CONNECTION_STRING:redis://localhost:6379} password: ${REDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81} max-pool-size: ${REDIS_MAX_POOL_SIZE:6} max-pool-waiting: ${REDIS_MAX_POOL_WAITING:24} max-waiting-handlers: ${REDIS_MAX_WAITING_HANDLERS:32} net-client-options: tcp-user-timeout-duration: 30s idle-timeout-duration: 30s **Параметры настроек** - ``type`` - тип подключения к Redis (STANDALONE/CLUSTER); - ``connection-string`` - указывается список серверов для подключения (перечисление через запятую); - ``password`` - пароль для подключения; - ``max-pool-size`` - устанавливается максимальный размер пула; - ``max-pool-waiting`` - устанавливается максимальный размер пула ожидающих команд; - ``max-waiting-handlers`` - устанавливается максимальный размер ожидающих обработчиков; - ``net-client-options`` - параметры Redis клиента: - ``tcp-user-timeout-duration`` - таймаут на соединение; - ``idle-timeout-duration`` - таймаут ожидания ответа от Redis. Секция auth ########### Секция ``auth`` служит для хранения секрета валидации токена. Например: .. code-block:: yaml auth: secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C} enabled: ${AUTH_ENABLED:true} access-list-path: rest-uploader/ids **Параметры настроек** - ``secret`` - cекрет для валидации токенов, например ``AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C``; - ``enabled`` - включение/отключение аутентификации, например ``AUTH_ENABLED:true``; - ``access-list-path`` - путь к списку доступов, например ``rest-uploader/ids``. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры конфигурации** - ``port`` - Порт для метрик, например ``METRICS_PORT:9837``. Секция csv-parser ################# .. note:: При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser должны быть синхронизированы с соответствующими настройками `csvparser Prostore `_. Так же настройки секции csv-parser должны быть одинаковыми в модулях CSV-Uploader (если используется его UI), REST-Uploader и DATA-Uploader. Секция ``csv-parser`` - настройка парсинга CSV. Например: .. code-block:: yaml csv-parser: # Символ разделителя значений separator: ${CSV_PARSER_SEPARATOR:;} # Символ кавычки quote-char: ${CSV_PARSER_QUOTE_CHAR:"} # Символ экранирования значений escape-char: ${CSV_PARSER_ESCAPE_CHAR:'} # Настройка интерпретации значений как null. Допустимые значения: # - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;; # - EMPTY_QUOTES - пустые кавычки, например ;""; # - BOTH - оба варианта # - NEITHER - никогда. Пустая строка всегда определяется как пустая строка field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS} **Параметры конфигурации** - ``separator`` - Символ разделителя значений, например ``CSV_PARSER_SEPARATOR:;``; - ``quote-char`` - символ кавычки, например ``CSV_PARSER_QUOTE_CHAR:"``; - ``escape-char`` - Символ экранирования значений, например ``CSV_PARSER_ESCAPE_CHAR:'``; Настройка интерпретации значений как null. Допустимые значения: - ``EMPTY_SEPARATORS`` - пустое значение между двумя разделителями, например ;; - ``EMPTY_QUOTES`` - пустые кавычки, например ;""; - ``BOTH`` - оба варианта; - ``NEITHER`` - никогда. Пустая строка всегда определяется как пустая строка. - ``field-as-null`` - способ определения null поля, например ``CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS``; - ``multiline-limit`` - параметры парсинга мультистроковых значений. .. note:: Парсер может зависать, если в данных встречаются вложенные неэкранированные кавычки. .. _additional_params: Дополнительное описание параметров ************************************* 1. Параметр ``CSV_PARSER_ESCAPE_CHAR`` работает следующим образом: если символ экранирования и символ кавычки равны ``"``, то будет использован **RFC4180Parser**, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например ``"поле, ""содержащее двойную кавычку"""`` будет считано как ``поле, "содержащее двойную кавычку"``). В противном случае будет использован **CSVParser**, использующий символ экранирования для обозначения "непечатаемых символов". 2. Параметр ``CSV_PARSER_FIELD_AS_NULL`` может принимать следующие значения: - ``EMPTY_SEPARATORS`` - два разделителя полей (см. csv-parser/separator) подряд считаются null. Например: строка [aaa,,ccc] содержит значения ["aaa", null, "bbb"], а строка [aaa,"",ccc] содержит значения ["aaa", "", "bbb"]. - ``EMPTY_QUOTES`` - два "ограничителя строки" (см. csv-parser/escape-char) подряд считаются null. Например: строка [aaa,"",ccc] содержит значения ["aaa", null, "bbb"], а строка [aaa,,ccc] содержит значения ["aaa", "", "bbb"]. - ``BOTH`` - оба варианта (см. ``EMPTY_SEPARATORS`` и ``EMPTY_QUOTES``) считаются null. Например: обе строки [aaa,"",ccc] и [aaa,,bbb] содержат одинаковое значение ["aaa", null, "bbb"]. - ``NEITHER`` - ни один из вариантов (см. ``EMPTY_SEPARATORS`` и ``EMPTY_QUOTES``) не считается null. Например: обе строки [aaa,"",ccc] и [aaa,,bbb] содержат одинаковое значение ["aaa", "", "bbb"]. Секция component-info ########################## В секции ``component-info`` указываются настройки модуля сбора информации о компонентах витрины. Например: .. code-block:: yaml # Настройки модуля сбора информации о компонентах витрины component-info: enabled: true # DataSource Prostore datasource: '' # Схема Prostore datamart: component_info # Имя таблицы для записи информации о компоненте table-name: component_info # Период попыток создания схемы, при неуспехе create-table-period: 60s # Период публикации health-check publish-period: 60s # Период после которого компонент считается неактивным при отсутствии health-check timeout-active: 300s # Список элементов конфига маскируемых при отправке, # если указан узловой элемент, то маскируются все вложенные в него элементы secrets: - redis.password **Параметры настроек** - ``datasource`` - датасорс из настроек Prostore; - ``datamart`` - схема Prostore; - ``table-name`` - имя таблицы для записи информации о компоненте; - ``create-table-period`` - период попыток создания схемы, в случае не успешного создания; - ``publish-period`` - период публикации health-check; - ``timeout-active`` - период, после которого компонент считается неактивным при отсутствии health-check; - ``secrets`` - список элементов конфигурации, маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы. Секция retries ########################## В секции ``retries`` указываются настройки числа повторов и задержек в случае ошибок. Например: .. code-block:: yaml retries: delete-delay: 1m delete-retries: 10 status-change-delay: 1m status-change-retries: 1000000 **Параметры настроек** - ``delete-delay`` - задержка перед повторной попыткой повтора в случае ошибки удаления; - ``delete-retries`` - число попыток удаления файла в случае ошибки удаления; - ``status-change-delay`` - задержка перед повторной попыткой повтора в случае ошибки изменения статуса; - ``status-change-retries`` - число попыток установить статус обработки ФЛК в случае ошибки изменения статуса.