.. _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 # Директория хранения файлов для типа dir dir: ${DATA_STORAGE_DIR:/tmp} 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: 60s # период жизни группы save_group_time: 1d validation: # таймаут выполнения асинхронной проверки validation-timeout: 1h # таймаут получения сообщений из redis poll-timeout: 30s # количество корутин асинхронной валидации 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 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} host: ${PS_HOST:localhost} port: ${PS_PORT:9090} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} 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: 30 idle-timeout: 30 auth: secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C} enabled: ${AUTH_ENABLED:true} access-list-path: rest-uploader/ids metrics: port: ${METRICS_PORT:9837} scheduler: redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60} # Настройки парсера 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} zk-path: ${REST_UPLOADER_BACKUP_ZK_PATH:/${environment.name}/rest-uploader} commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command} 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} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации **REST-uploader** осуществляется путем редактирования параметров настроек в файле ``application.yml``, где настраиваются секции: - ``http-server`` - указывается порт сервера; - ``executor`` - настраивается размер пула для запросов; - ``file-size`` - настраиваются ограничения на размер загружаемого файла; - ``environment`` - настройки окружения; - ``data-storage`` - директория хранения файлов для типа ``dir``; - ``conditions`` - включение форматно-логического контроля и поведение при обнаружении ошибок; - ``zookeeper`` - настройки подключения к Zookeeper; - ``persistence-mode`` - настройки хранения данных; - ``prostore-api-client`` - блок параметров конфигурирования взаимодействия с **Prostore**; - ``response`` - настройка периода хранения информации о статусе запроса; - ``control`` - подключение возможности управления дельтами от клиента; - ``redis`` - настройка подключения к **Redis**; - ``auth``- указывается секрет для валидации токенов; - ``metrics`` - настройка получения метрик; - ``scheduler`` - настройки планировщика отложенных заданий; - ``csv-parser`` - настройка парсинга CSV; - ``backup`` - настройки бекапирования. Секция 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 # Директория хранения файлов для типа dir dir: ${DATA_STORAGE_DIR:/tmp} 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`` .. attention:: блок ``compress`` редактируется синхронно для модулей rest-uploader/data-uploader - ``type`` - тип файлов, например ``DATA_STORAGE_TYPE:dir``; возможные значения: redis / dir / s3; - ``dir`` - директория хранения файлов для типа dir, например ``DATA_STORAGE_DIR:/tmp``; - ``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``. Секция conditions ################# В секции ``conditions`` - реализована возможность включения форматно-логического контроля и настройки поведения при обнаружении ошибок. Например: .. code-block:: yaml conditions: mode: warning save-time: 1d save-path: /tmp/rest-uploader/reports zookeeper-path: rest-uploader/conditions rest-timeout: 60s save_group_time: 1d validation: validation-timeout: 1h poll-timeout: 30s max-concurrent-handle: 1 batch-size: 1 charset-check-enabled: true 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, например ``30s``; - ``max-concurrent-handle`` - количество корутин асинхронной валидации, например ``1``; - ``batch-size`` - размер порции вычитки сообщений из redis, например ``1``; - ``charset-check-enabled`` - признак выполнения проверки кодировки, например ``true``; - ``timeout-active`` - период жизни флага активности, например ``3m``; - ``publish-period`` - период обновления статуса, например ``30s``; Режимы настройки ``mode`` ****************************** Для настройки ``mode`` реализованы режимы: ``skip_string`` 1. При необходимости пропуска строк формируется обновленный файл и сохраняется в queue с прежним ключом, после проверки всего файла; 2. Подтверждается чтение комплексной записи из stream ``validation_queue``, которая затем удаляется из стрима; 3. Размещается запись в list с именем ``validation_complete``; 4. В Redis записывается статус 0 – Буферизирован; 5. В зависимости от наличия ``group_id`` в комплексной записи: - при отсутствии ``group_id`` – завершается обработка файла; - при наличии ``group_id`` – обновляется статус в groupContent_[group_id] и выполняется проверка комплектности группы в соответствии с шагами 3-6 Журнал по группе файлов. ``warning`` 1. Подтверждается чтение комплексной записи из stream ``validation_queue`` и удаляется из стрима; 2. Размещается запись в list с именем ``validation_complete``; 3. В Redis записывается статус 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. В Redis записывает статус 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. В Redis записывается статус 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} 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``; - ``host`` - адрес Prostore, например ``PS_HOST:t5-prostore-01.ru-central1.internal``; - ``port`` - порт Prostore, например ``PS_PORT:9195``; - ``max-pool-size`` - максимальное число подключений к Prostore, например ``PS_MAX_POOL_SIZE:8``. Секция 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: 30 idle-timeout: 30 **Параметры настроек** - ``type`` - тип подключения к **Redis** (STANDALONE/CLUSTER); - ``connection-string`` - указывается список серверов для подключения (перечисление через запятую); - ``password`` - пароль для подключения; - ``max-pool-size`` - устанавливается максимальный размер пула; - ``max-pool-waiting`` - устанавливается максимальный размер пула ожидающих команд; - ``max-waiting-handlers`` - устанавливается максимальный размер ожидающих обработчиков; - ``net-client-options`` - параметры **Redis** клиента: - ``tcp-user-timeout`` - таймаут на соединение; - ``idle-timeout`` - таймаут ожидания ответа от редиса. Секция 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``. Секция scheduler ################ Секция ``scheduler`` предназначена для настроек планировщика отложенных заданий. Например: .. code-block:: yaml scheduler: delta-apply-request-timeout: ${DELTA_APPLY_REQUEST_TIMEOUT:60} **Параметры настроек** - ``delta-apply-request-timeout`` - таймаут применения отложенной дельты, например ``DELTA_APPLY_REQUEST_TIMEOUT:60``. Секция 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:'} # Настройка интерпретации значений как 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`` - параметры парсинга мультистроковых значений. .. attention:: Парсер может зависать если в данных встречаются вложенные неэкранированные кавычки. .. _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"]. Секция backup ############## Секция ``backup`` предназначена для настроек бекапирования модуля. Например: .. code-block:: yaml backup: zk-path: ${COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters} commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command} backupTopic: ${BACKUP_TOPIC:adapter.backup} statusTopic: ${STATUS_TOPIC:adapter.status} kafka: consumer: property: bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} group.id: ${COUNTER_BACKUP_GROUP_ID:counter_provider_adapter_command} auto.offset.reset: latest producer: property: bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} **Параметры настроек** - ``zk-path`` - путь к корневой ноде zookeeper для бэкапирования, например ``{COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters}``; - ``commandTopic`` - топик команд бэкапирования, например: ``{BACKUP_COMMAND_TOPIC:adapter.command}``; - ``backupTopic`` - топик для отправки забэкапированных данных, например: ``{BACKUP_TOPIC:adapter.backup}``; - ``statusTopic`` - топик для отправки статусов бэкапирования, например: ``{STATUS_TOPIC:adapter.status}``.