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

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

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

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

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

environment:
  name: ${ENVIRONMENT_NAME:test}

executor:
  reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
  max-execute-time: ${EXECUTOR_MAX_EXECUTE_TIME:600}
  log-pool-size: ${EXECUTOR_LOG_POOL_SIZE:20}

send:
  channel-size: ${SEND_CHANNEL_SIZE:1}
  timeout: ${SEND_TIMEOUT:30}
  delete-topic: ${SEND_DELETE_TOPIC:true}
  compress: ${SEND_COMPRESS:none}

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

prostore:
  kafka:
    message-limit: ${PS_MESSAGE_LIMIT:1000}
    zk-url: ${PS_ZK_KAFKA_URL:localhost:2181}
    statusEventTopic:
      topic: ${PS_STATUS_EVENT_TOPIC:status.event}
      commit-interval: ${kafka.commit-interval}
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}podd-adapter-mppr-status-event
        auto.offset.reset: earliest
        enable.auto.commit: false

kafka:
  agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
  max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:10}
  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:
    query-request:
      topic: ${kafka.internal.topic.prefix}mppr.delegate.rq
      max-concurrent-handle: ${kafka.max-concurrent-handle}
      commit-interval: ${kafka.commit-interval}
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}mppr.query.consumer
        auto.offset.reset: earliest
        enable.auto.commit: false
        max.poll.records: 1
        max.poll.interval.ms: 600000
    delta-request:
      topic: ${kafka.internal.topic.prefix}mppr.delta.rq
      max-concurrent-handle: ${kafka.max-concurrent-handle}
      commit-interval: ${kafka.commit-interval}
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}mppr.delta.consumer
        auto.offset.reset: earliest
        enable.auto.commit: false
        max.poll.records: 1
        max.poll.interval.ms: 600000
    download-data:
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}mppr.x.query.consumer
        auto.offset.reset: earliest
        enable.auto.commit: false
        max.poll.records: 1
  producer:
    query-result: ${kafka.external.topic.prefix}query.rs
    query-error: ${kafka.external.topic.prefix}query.err
    delta-result: ${kafka.external.topic.prefix}delta.rs
    delta-error: ${kafka.external.topic.prefix}delta.err
    property:
      bootstrap.servers: ${kafka.external.bootstrap.servers}
    internal:
      tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}

metrics:
  port: ${METRICS_PORT:9843}

logging:
  scl.delta:
    enabled: ${SCL_DELTA_ENABLED:false}
  request-response:
    delta-request: ${DELTA_REQUEST_LOG_ENABLED:false}
    delta-response: ${DELTA_RESPONSE_LOG_ENABLED:false}
    query-request: ${QUERY_REQUEST_LOG_ENABLED:false}
    query-response: ${QUERY_RESPONSE_LOG_ENABLED:false}

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

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

Пример файла application.yml для ПОДД-адаптера - Модуль MPPR можно найти в разделе «2.2. Настройка на состав программных средств» Руководства администратора.

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

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

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

  • executor - предназначена для указания размера пула для запросов;

  • send - настраиваются ограничения на размер загружаемого файла;

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

  • prostore - настройка подключения к серверу и базе данных ProStore;

  • kafka - настройки параметров подключения к шине данных Apache Kafka;

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

  • logging - настройки журналирования запросов и ответов;

4.1. Секция http-server

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

Например:

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

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

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

4.2. Секция environment

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

Например:

environment:
  name: ${ENVIRONMENT_NAME:test}

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

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

4.3. Секция executor

Секция executor предназначена для указания размера пула для чтения Kafka и времени выполнения задач.

Например:

executor:
  reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
  max-execute-time: ${EXECUTOR_MAX_EXECUTE_TIME:600}
  log-pool-size: ${EXECUTOR_LOG_POOL_SIZE:20}

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

  • reader-pool-size - размер пула для чтения Kafka, например EXECUTOR_READER_POOL_SIZE:20;

  • max-execute-time - максимальное время выполнения задачи (сек), например EXECUTOR_MAX_EXECUTE_TIME:600;

  • log-pool-size - размер пула используемого для журналирования запросов и ответов, например EXECUTOR_LOG_POOL_SIZE:20.

4.4. Секция send

В секции send настраиваются ограничения на размер загружаемого файла.

Например:

send:
  channel-size: ${SEND_CHANNEL_SIZE:1}
  timeout: ${SEND_TIMEOUT:30}
  delete-topic: ${SEND_DELETE_TOPIC:true}
  compress: ${SEND_COMPRESS:none}

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

  • channel-size - размер канала на отправку сообщения, например SEND_CHANNEL_SIZE:10;

  • timeout - таймаут вычитывания данных из топика (сек), например SEND_TIMEOUT:30

  • delete-topic - удаление внешнего топика после выгрузки, например SEND_DELETE_TOPIC:true;

  • compress - сжатие выгружаемых сообщений (none или zstd), например SEND_COMPRESS:none.

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

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

Например:

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}

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

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

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

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

4.6. Секция prostore

В секции prostore осуществляется настройка подключения к серверу и базе данных ProStore.

Например:

prostore:
  kafka:
    message-limit: ${PS_MESSAGE_LIMIT:1000}
    zk-url: ${PS_ZK_KAFKA_URL:localhost:2181}
    statusEventTopic:
      topic: ${PS_STATUS_EVENT_TOPIC:status.event}
      commit-interval: ${kafka.commit-interval}
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}podd-adapter-mppr-status-event
        auto.offset.reset: earliest
        enable.auto.commit: false

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

  • message-limit - лимит сообщений, например PS_MESSAGE_LIMIT:1000;

  • zk-url - адрес сервера zookeeper для загрузки данных в Prostore, например PS_ZK_KAFKA_URL:localhost:2181.

4.7. Секция kafka

Секция kafka определяет настройки взаимодействия через ПОДД-адаптер между Поставщиком данных (producer) и Получателем данных (consumer).

В секции kafka собраны настройки параметров подключения к шине данных Apache Kafka.

Например:

kafka:
  agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
  max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:10}
  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:
    query-request:
      topic: ${kafka.internal.topic.prefix}mppr.delegate.rq
      max-concurrent-handle: ${kafka.max-concurrent-handle}
      commit-interval: ${kafka.commit-interval}
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}mppr.query.consumer
        auto.offset.reset: earliest
        enable.auto.commit: false
        max.poll.records: 1
        max.poll.interval.ms: 600000
    delta-request:
      topic: ${kafka.internal.topic.prefix}mppr.delta.rq
      max-concurrent-handle: ${kafka.max-concurrent-handle}
      commit-interval: ${kafka.commit-interval}
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}mppr.delta.consumer
        auto.offset.reset: earliest
        enable.auto.commit: false
        max.poll.records: 1
        max.poll.interval.ms: 600000
    download-data:
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}
        group.id: ${kafka.internal.topic.prefix}mppr.x.query.consumer
        auto.offset.reset: earliest
        enable.auto.commit: false
        max.poll.records: 1
  producer:
    query-result: ${kafka.external.topic.prefix}query.rs
    query-error: ${kafka.external.topic.prefix}query.err
    delta-result: ${kafka.external.topic.prefix}delta.rs
    delta-error: ${kafka.external.topic.prefix}delta.err
    property:
      bootstrap.servers: ${kafka.external.bootstrap.servers}
    internal:
      tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp
      property:
        bootstrap.servers: ${kafka.internal.bootstrap.servers}

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

  • topic - префикс для топиков агента ПОДД, например AGENT_TOPIC_PREFIX.

4.8. Секция metrics

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

Например:

metrics:
  port: ${METRICS_PORT:9843}

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

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

4.9. Секция logging

Секция logging предназначена для настройки журналирования запросов и ответов

Например:

logging:
  scl.delta:
    enabled: ${SCL_DELTA_ENABLED:false}
  request-response:
    delta-request: ${DELTA_REQUEST_LOG_ENABLED:false}
    delta-response: ${DELTA_RESPONSE_LOG_ENABLED:false}
    query-request: ${QUERY_REQUEST_LOG_ENABLED:false}
    query-response: ${QUERY_RESPONSE_LOG_ENABLED:false}

LOG_FORMAT - Логирование в формате (JSON/TEXT) - указывается в logback.xml