2. Конфигурация модуля ПОДД-адаптер - Модуль импорта данных табличных параметров (application.yml)

Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля.

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

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

http-server:
  port: ${HTTP_PORT:8091}

environment:
  name: ${ENVIRONMENT_NAME:test}

zookeeper:
  # Подключение к зукипер
  connection-string: ${ZOOKEEPER:localhost:2181}

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

prostore:
  key:
    primary: tmp_id
    type: BIGINT
  datasource:
    # subprotocol для jdbc
    subprotocol: ${PS_SUBPROTOCOL:prostore}
    # Драйвер для подключения к простору
    driver: ${PS_DRIVER:ru.datamart.prostore.jdbc.Driver}
    # Подключение к Prostore
    host: ${PS_HOST:localhost}
    # Prostore порт
    port: ${PS_PORT:9195}
    # Prostore начальный размер пула
    initialPoolSize: ${PS_INITIAL_POOL_SIZE:5}
    # Prostore максимальный размер пула
    maxPoolSize: ${PS_MAX_POOL_SIZE:8}
  standalone:
    source: ${PS_STANDALONE_SOURCE:ADB}

# общие настройки подключения к кафке
kafka:
  agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:1000}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${KAFKA_COMMIT_INTERVAL:5s}
  external:
    bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
    topic.prefix: ${EXTERNAL_TOPIC_PREFIX:${kafka.agent.topic.prefix}}
  internal:
    bootstrap.servers: ${PS_KAFKA:localhost:9092}
    topic.prefix: ${INTERNAL_TOPIC_PREFIX:${kafka.agent.topic.prefix}}
  # параметры консьюмера сообщений
  consumer:
    bootstrap.servers: ${kafka.internal.bootstrap.servers}
    # Смещение при первом запуске приложения
    auto.offset.reset: earliest
  # параметры продъюсера сообщений
  producer:
    bootstrap.servers: ${kafka.internal.bootstrap.servers}
  # параметры клиента администратора для удаления временных топиков
  admin:
    bootstrap.servers: ${kafka.internal.bootstrap.servers}

# блок настроек импорта данных табличных параметров
query:
  data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
  # топик запросов
  request-topic: ${kafka.internal.topic.prefix}tp.upload.query
  # топик запросов на исполнение после загрузки данных
  response-topic: ${kafka.external.topic.prefix}query.rq
  # топик с ошибками
  error-topic: ${kafka.external.topic.prefix}query.err
  # блок настроек отмены запросов
  cancel:
    # топик запросов на отмену исполнения
    request-topic: ${kafka.external.topic.prefix}cancel.rq
    # настройки кеша отмененных запросов
    cache:
      # начальный размер кеша
      initial-capacity: 10000
      # время вытеснения из кеша
      expire-after-access: 60m
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${kafka.max-concurrent-handle}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${kafka.commit-interval}
  # дополнительные параметры консьюмера запросов
  consumer-properties:
    group.id: ${kafka.internal.topic.prefix}import.tp.query.consumer
  # дополнительные параметры продъюсера ответов
  producer-properties:
    bootstrap.servers: ${kafka.external.bootstrap.servers}
  # дополнительные параметры администрирования кафки
  admin-properties: [ ]

# блок настроек сервиса загрузки данных mppw
mppw:
  # топик запросов к сервису mppw
  request-topic: ${kafka.internal.topic.prefix}mppw.tp
  # топик ответов от сервиса mppw
  response-topic: ${kafka.internal.topic.prefix}mppw.rs
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${kafka.max-concurrent-handle}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${kafka.commit-interval}
  # дополнительные параметры консьюмера запросов
  consumer-properties:
    group.id: ${kafka.internal.topic.prefix}import.tp.response.consumer
    # Смещение при первом запуске приложения
    auto.offset.reset: earliest
  # дополнительные параметры продъюсера ответов
  producer-properties: [ ]

# блок настроек механизма очистки
delete:
  # входящий топик запросов удаления ресурсов
  request-topic: ${kafka.internal.topic.prefix}tp.delete.tmp
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${kafka.max-concurrent-handle}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${kafka.commit-interval}
  # дополнительные параметры консьюмера запросов
  consumer-properties:
    group.id: ${kafka.internal.topic.prefix}import.tp.delete.consumer

# блок настроек дельт
delta:
  # префикс топиков с данными
  data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
  # признак необходимости удаления топиков
  delete-topics: ${IMPORT_DELTA_DELETE_TOPICS:true}
  # дополнительные параметры администрирования кафки
  admin-properties: [ ]
  # блок параметров поставщика данных
  provider:
    # топик запросов
    request-topic: ${kafka.internal.topic.prefix}tp.upload.delta
    # топик ответов
    response-topic: ${kafka.internal.topic.prefix}delta.rq
    # топик ошибок
    error-topic: ${kafka.internal.topic.prefix}tp.upload.err
    # максимальное количество обработчиков входящих запросов
    max-concurrent-handle: ${kafka.max-concurrent-handle}
    # периодичность фиксации оффсета обработанных сообщений
    commit-interval: ${kafka.commit-interval}
    # дополнительные параметры консьюмера запросов
    consumer-properties:
      group.id: ${kafka.internal.topic.prefix}import.tp.delta.consumer
    # дополнительные параметры продъюсера ответов
    producer-properties: [ ]
  # блок параметров получателя данных
  recipient:
    # топик запросов
    request-topic: ${kafka.internal.topic.prefix}tp.upload.delta.in
    # топик ответов
    response-topic: ${kafka.internal.topic.prefix}delta.in
    # топик ошибок
    error-topic: ${kafka.internal.topic.prefix}tp.upload.in.err
    # максимальное количество обработчиков входящих запросов
    max-concurrent-handle: ${kafka.max-concurrent-handle}
    # периодичность фиксации оффсета обработанных сообщений
    commit-interval: ${kafka.commit-interval}
    # дополнительные параметры консьюмера запросов
    consumer-properties:
      group.id: ${kafka.internal.topic.prefix}import.tp.delta.in.consumer
    # дополнительные параметры продъюсера ответов
    producer-properties: [ ]

metrics:
  # Порт сервера для получения метрик
  port: ${METRICS_PORT:19843}
  kafkaAdminClientName: kafkaAdminClient

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

Настройка конфигурации ПОДД-адаптера - Модуль импорта данных табличных параметров осуществляется путем редактирования параметров настроек в файле application.yml.

Пример конфигурации файла application.yml для ПОДД-адаптера - Модуль импорта данных табличных параметров см. в разделе Пример файла application.yml Руководства администратора.

В файле конфигурации ПОДД-адаптера - Модуль импорта данных табличных параметров могут быть настроены следующие секции:

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

  • environment - название окружения (test, prod и т.д.);

  • zookeeper – строка подключения к сервисной БД Zookeeper;

  • prostore-api-client - блок параметров конфигурирования взаимодействия с ProStore. Если false - будет использоваться JDBC-драйвер;

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

  • kafka - общие настройки подключения к Kafka;

  • query - блок настроек импорта данных табличных параметров;

  • mppw - блок настроек сервиса загрузки данных mppw;

  • delete - блок настроек механизма очистки;

  • delta - настройка работы с импортом дельт;

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

4.1. Секция http-server

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

Например:

http:
  port: ${HTTP_PORT:8091}

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

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

4.2. Секция environment

В секции environment указывается среда разработки (dev, test, stable, prod).

Например:

environment:
  name: ${ENVIRONMENT_NAME:test}

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

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

4.3. Секция zookeeper

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

Например:

zookeeper:
  # Подключение к зукипер
  connection-string: ${ZOOKEEPER:t5-adsp-01.ru-central1.internal:2181}

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

  • connection-string - подключение к Zookeeper DS, например ZOOKEEPER:t5-adsp-01.ru-central1.internal:2181.

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

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

Например:

prostore-rest-client:
  enabled: true
  host: ${PS_HOST:localhost}
  port: ${PS_PORT:9195}
  http:
    max-pool-size: ${PS_MAX_POOL_SIZE:8}

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

  • host - адрес Prostore, например PS_HOST:localhost;

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

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

4.5. Секция prostore

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

Например:

prostore:
  key:
    primary: tmp_id
    type: BIGINT
  datasource:
    # subprotocol для jdbc
    subprotocol: ${PS_SUBPROTOCOL:prostore}
    # Драйвер для подключения к простору
    driver: ${PS_DRIVER:ru.datamart.prostore.jdbc.Driver}
    # Подключение к Prostore
    host: ${PS_HOST:localhost}
    # Prostore порт
    port: ${PS_PORT:9195}
    # Prostore начальный размер пула
    initialPoolSize: ${PS_INITIAL_POOL_SIZE:5}
    # Prostore максимальный размер пула
    maxPoolSize: ${PS_MAX_POOL_SIZE:8}
  standalone:
    source: ${PS_STANDALONE_SOURCE:ADB}

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

  • subprotocol - subprotocol для jdbc, например PS_SUBPROTOCOL:prostore;

  • driver - драйвер для подключения к простору, например PS_DRIVER:ru.datamart.prostore.jdbc.Driver;

  • host - подключение к ядру ProStore, например: DTMDB_HOST:t5-prostore-01.ru-central1.internal;

  • port - порт ядра ProStore, например: PROSTOREDB_PORT:9197;

  • initialPoolSize - Prostore начальный размер пула, например PS_INITIAL_POOL_SIZE:5;

  • maxPoolSize - размер пула JDBC подключения, например: maxPoolSize: 5;

  • source - источник для standalone таблицы (ADB/ADP), например PS_STANDALONE_SOURCE:ADB.

4.6. Секция kafka

Секция kafka хранит общие настройки подключения к Kafka.

Например:

kafka:
  agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:1000}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${KAFKA_COMMIT_INTERVAL:5s}
  external:
    bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
    topic.prefix: ${EXTERNAL_TOPIC_PREFIX:${agent.topic.prefix}}
  internal:
    bootstrap.servers: ${PS_KAFKA:localhost:9092}
    topic.prefix: ${INTERNAL_TOPIC_PREFIX:${agent.topic.prefix}}
  # параметры консьюмера сообщений
  consumer:
    bootstrap.servers: ${kafka.internal.bootstrap.servers}
    # Смещение при первом запуске приложения
    auto.offset.reset: earliest
  # параметры продьюсера сообщений
  producer:
    bootstrap.servers: ${kafka.internal.bootstrap.servers}
  # параметры клиента администратора для удаления временных топиков
  admin:
    bootstrap.servers: ${kafka.internal.bootstrap.servers}

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

  • max-concurrent-handle - максимальное количество обработчиков входящих запросов;

  • commit-interval - периодичность фиксации оффсета обработанных сообщений;

  • group.id - GroupId для подписчика;

  • auto.offset.reset - смещение при первом запуске приложения;

  • enable.auto.commit- Вкл/выкл автоматический коммит;

  • consumer - параметры консьюмера сообщений;

  • producer – параметры продьюсера сообщений.

4.7. Секция query

Секция query хранит блок настроек импорта данных табличных параметров.

Например:

query:
  data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
  # топик запросов
  request-topic: ${kafka.internal.topic.prefix}tp.upload.query
  # топик запросов на исполнение после загрузки данных
  response-topic: ${kafka.external.topic.prefix}query.rq
  # топик с ошибками
  error-topic: ${kafka.external.topic.prefix}query.err
  # блок настроек отмены запросов
  cancel:
    # топик запросов на отмену исполнения
    request-topic: ${kafka.external.topic.prefix}cancel.rq
    # настройки кеша отмененных запросов
    cache:
      # начальный размер кеша
      initial-capacity: 10000
      # время вытеснения из кеша
      expire-after-access: 60m
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${kafka.max-concurrent-handle}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${kafka.commit-interval}
  # дополнительные параметры консьюмера запросов
  consumer-properties:
    group.id: ${kafka.internal.topic.prefix}import.tp.query.consumer
  # дополнительные параметры продюсера ответов
  producer-properties:
    bootstrap.servers: ${kafka.external.bootstrap.servers}
  # дополнительные параметры администрирования кафки
  admin-properties: [ ]

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

  • request-topic - топик запросов;

  • response-topic - топик запросов на исполнение после загрузки данных;

  • error-topic - топик с ошибками;

  • cancel- блок настроек отмены запросов;

  • initial-capacity - начальный размер кеша;

  • expire-after-access - время вытеснения из кеша;

  • max-concurrent-handle - максимальное количество обработчиков входящих запросов;

  • commit-interval - периодичность фиксации оффсета обработанных сообщений;

  • consumer-properties - дополнительные параметры консьюмера запросов;

  • producer-properties - дополнительные параметры продюсера ответов;

  • admin-properties - дополнительные параметры администрирования кафки.

4.8. Секция mppw

Секция mppw хранит блок настроек сервиса загрузки данных mppw.

mppw:
  # топик запросов к сервису mppw
  request-topic: ${kafka.internal.topic.prefix}mppw.tp
  # топик ответов от сервиса mppw
  response-topic: ${kafka.internal.topic.prefix}mppw.rs
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${kafka.max-concurrent-handle}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${kafka.commit-interval}
  # дополнительные параметры консьюмера запросов
  consumer-properties:
    group.id: ${kafka.internal.topic.prefix}import.tp.response.consumer
    # Смещение при первом запуске приложения
    auto.offset.reset: earliest
  # дополнительные параметры продюсера ответов
  producer-properties: [ ]

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

  • request-topic - топик запросов к сервису mppw;

  • response-topic - топик ответов от сервиса mppw;

  • max-concurrent-handle - максимальное количество обработчиков входящих запросов;

  • commit-interval- периодичность фиксации оффсета обработанных сообщений;

  • consumer-properties - дополнительные параметры консьюмера запросов;

  • producer-properties - дополнительные параметры продюсера ответов.

4.9. Секция delete

Секция delete хранит блок настроек механизма очистки.

Например:

delete:
  # входящий топик запросов удаления ресурсов
  request-topic: ${kafka.internal.topic.prefix}tp.delete.tmp
  # максимальное количество обработчиков входящих запросов
  max-concurrent-handle: ${kafka.max-concurrent-handle}
  # периодичность фиксации оффсета обработанных сообщений
  commit-interval: ${kafka.commit-interval}
  # дополнительные параметры консьюмера запросов
  consumer-properties:
    group.id: ${kafka.internal.topic.prefix}import.tp.delete.consumer

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

  • request-topic - топик запросов к сервису mppw;

  • response-topic - топик ответов от сервиса mppw;

  • max-concurrent-handle - максимальное количество обработчиков входящих запросов;

  • commit-interval- периодичность фиксации оффсета обработанных сообщений;

  • consumer-properties - дополнительные параметры консьюмера запросов.

4.10. Секция delta

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

Например:

delta:
  # префикс топиков с данными
  data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
  # признак необходимости удаления топиков
  delete-topics: ${IMPORT_DELTA_DELETE_TOPICS:true}
  # дополнительные параметры администрирования кафки
  admin-properties: [ ]
  # блок параметров поставщика данных
  provider:
    # топик запросов
    request-topic: ${kafka.internal.topic.prefix}tp.upload.delta
    # топик ответов
    response-topic: ${kafka.internal.topic.prefix}delta.rq
    # топик ошибок
    error-topic: ${kafka.internal.topic.prefix}tp.upload.err
    # максимальное количество обработчиков входящих запросов
    max-concurrent-handle: ${kafka.max-concurrent-handle}
    # периодичность фиксации оффсета обработанных сообщений
    commit-interval: ${kafka.commit-interval}
    # дополнительные параметры консьюмера запросов
    consumer-properties:
      group.id: ${kafka.internal.topic.prefix}import.tp.delta.consumer
    # дополнительные параметры продъюсера ответов
    producer-properties: [ ]
  # блок параметров получателя данных
  recipient:
    # топик запросов
    request-topic: ${kafka.internal.topic.prefix}tp.upload.delta.in
    # топик ответов
    response-topic: ${kafka.internal.topic.prefix}delta.in
    # топик ошибок
    error-topic: ${kafka.internal.topic.prefix}tp.upload.in.err
    # максимальное количество обработчиков входящих запросов
    max-concurrent-handle: ${kafka.max-concurrent-handle}
    # периодичность фиксации оффсета обработанных сообщений
    commit-interval: ${kafka.commit-interval}
    # дополнительные параметры консьюмера запросов
    consumer-properties:
      group.id: ${kafka.internal.topic.prefix}import.tp.delta.in.consumer
    # дополнительные параметры продъюсера ответов
    producer-properties: [ ]

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

  • data-topic-prefix - префикс топиков с данными;

  • delete-topics - признак необходимости удаления топиков;

  • admin-properties - дополнительные параметры администрирования кафки;

  • provider - блок параметров поставщика данных;

  • recipient - блок параметров получателя данных;

  • request-topic - топик запросов;

  • response-topic - топик запросов на исполнение после загрузки данных;

  • error-topic - топик с ошибками;

  • max-concurrent-handle - максимальное количество обработчиков входящих запросов;

  • commit-interval - периодичность фиксации оффсета обработанных сообщений;

  • consumer-properties - дополнительные параметры консьюмера запросов;

  • producer-properties - дополнительные параметры продюсера ответов.

4.11. Секция metrics

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

Например:

metrics:
  # Порт сервера для получения метрик
  port: ${METRICS_PORT:9843}
  kafkaAdminClientName: kafkaAdminClient

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

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