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

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

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

Приведем типовую структуру файла и возможные настройки DATA-Uploader. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.

server:
  port: ${SERVER_PORT:8082}

prostore-rest-client:
  # Признак использования rest-api для взаимодействия с простором.
  enabled: ${PS_REST_CLIENT_ENABLED:true}
  host: ${PS_HOST:localhost}
  port: ${PS_PORT:9195}
  http:
    max-pool-size: ${PS_MAX_POOL_SIZE:8}


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}

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}

active:
  timeout: ${ACTIVE_TIMEOUT:60}
  time-to-live: ${ACTIVE_TTL:180}

delta:
  timeout: ${DELTA_TIMEOUT:300}
  row-max-count: ${DELTA_MAX_ROWS:500000}
  chunk-row-max-count: ${DELTA_CHUNK_ROWS:1000}
  chunk-data-max-size: ${DELTA_CHUNK_DATA_SIZE:1048576}

response:
  time-to-live: ${RESPONSE_TTL:36000}

kafka:
  agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
  internal:
    bootstrap.servers: ${PS_KAFKA:localhost:9092}
    topic.prefix: ${INTERNAL_TOPIC_PREFIX:${kafka.agent.topic.prefix}}
  mppw-consumer:
    property:
      bootstrap.servers: ${kafka.internal.bootstrap.servers}
      group.id: data.uploader.group
      auto.offset.reset: earliest
      enable.auto.commit: true
  mppw-producer:
    property:
      bootstrap.servers: ${kafka.internal.bootstrap.servers}
  data-producer:
    property:
      bootstrap.servers: ${kafka.internal.bootstrap.servers}
  data-topic-prefix: ${kafka.internal.topic.prefix}mppw.upload.data
  mppw-upload-rq-topic: ${kafka.internal.topic.prefix}mppw.upload.rq
  mppw-upload-rs-topic: ${kafka.internal.topic.prefix}mppw.upload.rs

metrics:
  port: ${METRICS_PORT:9837}

scheduler:
  redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60}

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

Настройка конфигурации DATA-Uploader осуществляется путем редактирования параметров настроек в файле application.yml.

Пример конфигурации файла application.yml для DATA-Uploader см. в разделе Пример файла application.yml Руководства администратора.

В файле конфигурации DATA-Uploader могут быть настроены следующие секции:

  • poddKafkaUrl - адрес сервера Kafka PODD для DATA-Uploader;

  • prostoreKafkaUrl - адрес сервера Kafka для ядра витрины ProStore;

  • server - указывается порт сервера;

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

  • redis - настройка подключения к redis;

  • csv-parser - настройка парсера CSV-файлов;

  • active - настройки интервалов между попытками перехода в активное состояние и времени жизни ключа флага активности;

  • delta - настройка обработок загрузок и отправок заданий на загрузку дельт;

  • response - настройка времени хранения ответов по заданию в redis;

  • kafka - настройка распределений отправки топиков;

  • metrics - настройка получения метрик;

  • scheduler - настройки планировщика отложенных заданий.

4.1. Секция server

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

Например:

server:
  port: ${SERVER_PORT:8081}

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

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

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

В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore. Параметр prostore-rest-client.enabled со значением false позволяет переключить исполнение запросов через JDBC-драйвер.

Например:

prostore-rest-client:
  enabled: true
  host: ${PS_HOST:t5-prostore-01.ru-central1.internal}
  port: ${PS_PORT:9195}
  http:
    max-pool-size: ${PS_MAX_POOL_SIZE:8}

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

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

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

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

4.3. Секция 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}

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

  • type - тип подключения к Redis (STANDALONE/CLUSTER), например 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.

4.4. Секция csv-parser

Внимание

При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции 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:'}
  field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS}

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

  • separator - указывается символ разделителя полей;

  • quote-char - указывается символ кавычки;

  • escape-char - указывается символ экранирования. Если символ экранирования и символ кавычки равны «, то будет использован RFC4180Parser, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например «поле, «»содержащее двойную кавычку»»» будет считано как поле, «содержащее двойную кавычку»). В противном случае будет использован CSVParser, использующий символ экранирования для обозначения «непечатаемых символов».

  • field-as-null - указывается способ определения поля, например: CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS.

4.5. Секция active

Секция active интервалов между попытками перехода в активное состояние и времени жизни ключа флага активности.

Например:

active:
    timeout: ${ACTIVE_TIMEOUT:60}
    time-to-live: ${ACTIVE_TTL:180}

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

  • timeout - интервал между попытками перехода в активное состояние;

  • time-to-live - время жизни ключа флага активности.

4.6. Секция delta

Секция delta предназначена для указания настройки обработок загрузок и отправок заданий на загрузку дельт.

Например:

delta:
  timeout: ${DELTA_TIMEOUT:300}
  row-max-count: ${DELTA_MAX_ROWS:500000}
  chunk-row-max-count: ${DELTA_CHUNK_ROWS:1000}
  chunk-data-max-size: ${DELTA_CHUNK_DATA_SIZE:1048576}

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

  • timeout - максимальный интервал времени между первой считанной записью цикла загрузки и отправкой заданий на загрузку дельт;

  • row-max-count - максимальное количество обработанных записей для старта отправки заданий на загрузку дельт;

  • chunk-row-max-count - количество сообщений в одном чанке;

  • chunk-data-max-size - максимальный размер чанка.

4.7. Секция response

Секция response определяет настройка времени хранения ответов по заданию в redis.

Например:

response:
    time-to-live: ${RESPONSE_TTL:36000}

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

  • time-to-live - Сколько времени Redis будет хранить ответ по заданию (ключ status.<uuid>).

4.8. Секция kafka

Секция kafka позволяет настраивать отправку топиков в заданные модули.

Например:

kafka:
  mppw-consumer:
    property:
      bootstrap.servers: *poddKafkaUrl
      group.id: data.uploader.group
      auto.offset.reset: earliest
      enable.auto.commit: true
  mppw-producer:
    property:
      bootstrap.servers: *poddKafkaUrl
  data-producer:
    property:
      bootstrap.servers: *prostoreKafkaUrl
  data-topic-prefix: ${AGENT_TOPIC_PREFIX:}mppw.upload.data
  mppw-upload-rq-topic: ${AGENT_TOPIC_PREFIX:}mppw.upload.rq
  mppw-upload-rs-topic: ${AGENT_TOPIC_PREFIX:}mppw.upload.rs

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

  • data-topic-prefix - префикс топика, куда будут отправляться данные;

  • mppw-upload-rq-topic - топик для отправки заданий на MPPW модуль;

  • mppw-upload-rq-topic - топик, в который будут приходить результаты исполнения заданий MPPW модуля.

4.9. Секция metrics

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

Например:

metrics:
  port: ${METRICS_PORT:9837}

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

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

4.10. Секция scheduler

Секция scheduler предназначена для настроек планировщика отложенных заданий.

Например:

scheduler:
  redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60}

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

  • redis-check-request-timeout -таймаут отправки запроса в Redis, например DELTA_APPLY_REQUEST_TIMEOUT:60;

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

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