2. Конфигурация модуля REST-Uploader (application.yml)

Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: асинхронная загрузка данных из источников, настройка подключения к ядру витрины (секция: prostore), а также другие настройки необходимые для корректной работы модуля.

2.1. Пример файла application.yml

В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.

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}
  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}

backup:
  mode: ${BACKUP_MODE:rest} # kafka | rest
  rest:
    uri: ${BACKUP_URI:/backup}
  backupTopic: ${BACKUP_TOPIC:adapter.backup}
  statusTopic: ${STATUS_TOPIC:adapter.status}
  kafka:
    consumer:
      property:
        bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
        group.id: ${REST_UPLOADER_BACKUP_GROUP_ID:rest-uploader_adapter_command}
        auto.offset.reset: latest
    producer:
      property:
        bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}


# Настройки модуля сбора информации о компонентах витрины
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

3. Параметры конфигурации

Настройка конфигурации 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;

  • backup - настройки бекапирования;

  • component-info - настройки модуля сбора информации о компонентах витрины.

3.1. Секция http-server

В секции http-server указывается порт веб-сервера.

Например:

http-server:
  port: ${SERVER_PORT:8081}

Параметры настроек

  • port - порт веб-сервера, например: SERVER_PORT:8081.

3.2. Секция executor

Секция executor предназначена для указания размера пула для запросов.

Например:

executor:
  reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}

Параметры настроек

  • reader-pool-size - Размер пула для запросов, например EXECUTOR_READER_POOL_SIZE:20

3.3. Секция file-size

В секции file-size можно настраивать ограничения на размер загружаемого файла.

Например:

file-size:
  restriction: ${SEND_FILE_SIZE_RESTRICTION:512}

Параметры настроек

  • file-size-restriction - ограничение на размер загружаемого файла, например SEND_FILE_SIZE_RESTRICTION:512.

3.4. Секция environment

Секция environment предназначена для настройки среды окружения.

Например:

environment:
  name: ${ENVIRONMENT_NAME:test}

Параметры настроек

  • name - Название окружения, например ENVIRONMENT_NAME:test.

3.5. Секция data-storage

В секции data-storage указывается директория хранения файлов для типа dir.

Например:

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.

Примечание

Блок compress редактируется синхронно для модулей REST-Uploader/DATA-Uploader

3.6. Секция conditions

В секции conditions - реализована возможность включения форматно-логического контроля и настройки поведения при обнаружении ошибок.

Например:

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;

3.6.1. Режимы настройки 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 Журнал по группе файлов.

3.7. Секция Zookeeper

В секции zookeeper указываются параметры настроек к Zookeeper.

Например:

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.

3.8. Секция persistence-mode

В секции persistence-mode указывается настройка хранения данных: или в Prostore или в Zookeeper. в случае выбора Prostore автоматически создаются необходимые таблицы.

Например:

persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore | zookeeper

Параметры настроек

  • persistence-mode - настройка хранения данных, например PERSISTENCE_MODE:prostore.

3.9. Секция prostore-rest-client

В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с Prostore.

Например:

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}
  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;

  • host - адрес Prostore, например PS_HOST:t5-prostore-01.ru-central1.internal;

  • port - порт Prostore, например PS_PORT:9195;

  • max-pool-size - максимальное число подключений к Prostore, например PS_MAX_POOL_SIZE:8.

3.10. Секция migration

В секции migration настраиваются миграции Zookeeper для задачи бекапирования.

Например:

migration:
  enabled: ${MIGRATION_ENABLE:false}

Параметры настроек

  • enabled - подключение миграции, например {MIGRATION_ENABLE:false}.

3.11. Секция response

В секции response указывается период хранения информации о статусе запроса.

Например:

response:
  time-to-live: ${RESPONSE_TTL:10h}

Параметры настроек

  • time-to-live - период хранения информации о статусе запроса, например ESPONSE_TTL:10h.

3.12. Секция control

Секция control определяет возможности управления дельтами от клиента. Управление дельтами от клиента допускается только при настройках delta-> creating-delta-on-upload-request=disable у модулей DATA-Uploader и podd-adapter-mppw.

Например:

control:
  delta:
    enable: ${CONTROL_DELTA_ENABLE:true}

Параметры настроек

  • enable - подключение возможности управления дельтами от клиента, например CONTROL_DELTA_ENABLE:true.

3.13. Секция redis

Секция redis определяет настройки подключения к Redis.

Например:

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.

3.14. Секция auth

Секция auth служит для хранения секрета валидации токена.

Например:

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.

3.15. Секция metrics

Секция metrics предназначена для настройки параметров метрик.

Например:

metrics:
  port: ${METRICS_PORT:9837}

Параметры конфигурации

  • port - Порт для метрик, например METRICS_PORT:9837.

3.16. Секция csv-parser

Примечание

При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser должны быть синхронизированы с соответствующими настройками csvparser Prostore. Так же настройки секции csv-parser должны быть одинаковыми в модулях CSV-Uploader (если используется его UI), REST-Uploader и DATA-Uploader.

Секция csv-parser - настройка парсинга 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}

Параметры конфигурации

  • 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 - параметры парсинга мультистроковых значений.

Примечание

Парсер может зависать, если в данных встречаются вложенные неэкранированные кавычки.

3.16.1. Дополнительное описание параметров

  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»].

3.17. Секция backup

Секция backup предназначена для настроек бекапирования модуля.

Например:

backup:
  mode: ${BACKUP_MODE:rest} # kafka | rest
  rest:
    uri: ${BACKUP_URI:/backup}
  backupTopic: ${BACKUP_TOPIC:adapter.backup}
  statusTopic: ${STATUS_TOPIC:adapter.status}
  kafka:
    consumer:
      property:
        bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}
        group.id: ${CSV_UPLOADER_BACKUP_GROUP_ID:csv_uploader_adapter_command}
        auto.offset.reset: latest
    producer:
      property:
        bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}

Параметры настроек

  • mode - режим бекапирования, например BACKUP_MODE:rest;

  • uri - путь к файлу бекапирования в случае выбора REST-сервисов для режима бэкапирования;

  • backupTopic - топик для отправки сохраненных данных, например: {BACKUP_TOPIC:adapter.backup};

  • statusTopic - топик для отправки статусов бэкапирования, например: {STATUS_TOPIC:adapter.status}.

3.18. Секция component-info

В секции component-info указываются настройки модуля сбора информации о компонентах витрины.

Например:

# Настройки модуля сбора информации о компонентах витрины
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 - список элементов конфигурации, маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы.

3.19. Секция retries

В секции retries указываются настройки числа повторов и задержек в случае ошибок.

Например:

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 - число попыток установить статус обработки ФЛК в случае ошибки изменения статуса.