.. _data_uploader_config: Конфигурация модуля DATA-Uploader (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: обеспечение обработки очереди файлов, настройка подключения к ядру витрины (секция: ``prostore``), а также другие настройки необходимые для корректной работы модуля. .. _data_uploader_application_yml: Пример файла application.yml ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Приведем типовую структуру файла и возможные настройки :term:`DATA-Uploader`. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml 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} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации **DATA-Uploader** осуществляется путем редактирования параметров настроек в файле ``application.yml``. Пример конфигурации файла ``application.yml`` для **DATA-Uploader** см. в разделе :ref:`data_uploader_application_yml` Руководства администратора. В файле конфигурации **DATA-Uploader** могут быть настроены следующие секции: - ``poddKafkaUrl`` - адрес сервера Kafka PODD для **DATA-Uploader**; - ``prostoreKafkaUrl`` - адрес сервера Kafka для ядра витрины :term:`ProStore`; - ``server`` - указывается порт сервера; - ``prostore-rest-client`` - блок параметров конфигурирования взаимодействия с :term:`ProStore`. - ``redis`` - настройка подключения к redis; - ``csv-parser`` - настройка парсера CSV-файлов; - ``active`` - настройки интервалов между попытками перехода в активное состояние и времени жизни ключа флага активности; - ``delta`` - настройка обработок загрузок и отправок заданий на загрузку дельт; - ``response`` - настройка времени хранения ответов по заданию в redis; - ``kafka`` - настройка распределений отправки топиков; - ``metrics`` - настройка получения метрик; - ``scheduler`` - настройки планировщика отложенных заданий. Секция server ############# В секции ``server`` указывается порт веб-сервера. Например: .. code-block:: yaml server: port: ${SERVER_PORT:8081} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``SERVER_PORT:8081``. Секция prostore-rest-client ########################### В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с ProStore. Параметр ``prostore-rest-client.enabled`` со значением ``false`` позволяет переключить исполнение запросов через JDBC-драйвер. Например: .. code-block:: yaml 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``. Секция 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} **Параметры настроек** - ``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``. Секция csv-parser ################# .. attention:: При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции 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:'} 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``. Секция active ############# Секция ``active`` интервалов между попытками перехода в активное состояние и времени жизни ключа флага активности. Например: .. code-block:: yaml active: timeout: ${ACTIVE_TIMEOUT:60} time-to-live: ${ACTIVE_TTL:180} **Параметры настроек** - ``timeout`` - интервал между попытками перехода в активное состояние; - ``time-to-live`` - время жизни ключа флага активности. Секция delta ############ Секция ``delta`` предназначена для указания настройки обработок загрузок и отправок заданий на загрузку дельт. Например: .. code-block:: yaml 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`` - максимальный размер чанка. Секция response ############### Секция ``response`` определяет настройка времени хранения ответов по заданию в redis. Например: .. code-block:: yaml response: time-to-live: ${RESPONSE_TTL:36000} **Параметры настроек** - ``time-to-live`` - Сколько времени Redis будет хранить ответ по заданию (ключ status.). Секция kafka ############ Секция ``kafka`` позволяет настраивать отправку топиков в заданные модули. Например: .. code-block:: yaml 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 модуля. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры настроек** - ``port`` - порт для метрик, например ``METRICS_PORT:9837``. Секция scheduler ################ Секция ``scheduler`` предназначена для настроек планировщика отложенных заданий. Например: .. code-block:: yaml scheduler: redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60} **Параметры настроек** - ``redis-check-request-timeout`` -таймаут отправки запроса в Redis, например ``DELTA_APPLY_REQUEST_TIMEOUT:60``; Дополнительное описание параметров ################################## 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"].