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. Дополнительное описание параметров
Параметр
CSV_PARSER_ESCAPE_CHARработает следующим образом: если символ экранирования и символ кавычки равны", то будет использован RFC4180Parser, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например «поле, «»содержащее двойную кавычку»»» будет считано как поле, «содержащее двойную кавычку»). В противном случае будет использован CSVParser, использующий символ экранирования для обозначения «непечатаемых символов».Параметр
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»].