.. _podd_adapter_query_config: Конфигурация СМЭВ4-адаптера - Модуль исполнения запросов (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл **СМЭВ4-адаптера - Модуль исполнения запросов**, в котором задана логика и порядок работы адаптера: - получение и обработка входящих запросов; - подключение к Сервису формирования документов (секция: ``printable-forms-service``); - настройки логирования (секция: ``logging``), а также другие настройки необходимые для корректной работы адаптера. Хинт пагинации FORCE_LLR определен в переменных среды. .. _podd_adapter_query_application.yml: Пример файла application.yml ################################ В конфигурационном файле задаются настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml http-server: port: ${HTTP_PORT:8090} 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} compress: ${SEND_COMPRESS:none} max-message-size: ${SEND_MAX_MESSAGE_SIZE:800000} query: data-source-type: for-listagg: ${DATA_SOURCE_TYPE_LISTAGG:ADP} statistics-request: ${DATA_SOURCE_TYPE_STATISTIC:ADP} force-llr-for-order: ${FORCE_LLR_FOR_ORDER:true} force-llr-for-all: ${FORCE_LLR_FOR_ALL:false} llr-rows-limit: ${LLR_ROWS_LIMIT:200} fetch-size: ${FETCH_SIZE:1000} zookeeper: connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000} chroot: ${ZOOKEEPER_DS_CHROOT:/adapter} prostore-rest-client: host: ${PS_HOST:localhost} port: ${PS_PORT:9195} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} printable-forms-service: host: ${PFS_HOST:localhost} port: ${PFS_PORT:8080} pool-size: ${PFS_POOL_SIZE:10} timeout: ${PFS_TIMEOUT:30} 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: query-request: topic: ${kafka.external.topic.prefix}query.rq max-concurrent-handle: ${kafka.max-concurrent-handle} commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}query.consumer auto.offset.reset: earliest enable.auto.commit: false query-cancel-request: topic: ${kafka.external.topic.prefix}cancel.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}cancel.query.consumer auto.offset.reset: earliest enable.auto.commit: false metadata-request: topic: ${kafka.external.topic.prefix}metadata.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}metadata.consumer auto.offset.reset: earliest enable.auto.commit: false metadata-new-data-request: topic: ${kafka.external.topic.prefix}metadata.newdata.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}metadata.newdata.consumer auto.offset.reset: earliest enable.auto.commit: false statistics-request: topic: ${kafka.external.topic.prefix}statistics.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}statistics.rq.consumer auto.offset.reset: earliest enable.auto.commit: false report-request: topic: ${kafka.external.topic.prefix}procedure.query.rq max-concurrent-handle: ${kafka.max-concurrent-handle} commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}report.rq.consumer auto.offset.reset: earliest enable.auto.commit: false producer: query-result: ${kafka.external.topic.prefix}query.rs query-error: ${kafka.external.topic.prefix}query.err query-estimation-result: ${kafka.external.topic.prefix}query.estimation.rs query-cancel-result: ${kafka.external.topic.prefix}cancel.rs query-cancel-error: ${kafka.external.topic.prefix}cancel.err metadata-result: ${kafka.external.topic.prefix}metadata.rs metadata-error: ${kafka.external.topic.prefix}metadata.err metadata-newdata-result: ${kafka.external.topic.prefix}metadata.newdata.rs metadata-newdata-error: ${kafka.external.topic.prefix}metadata.newdata.err statistics-result: ${kafka.external.topic.prefix}statistics.rs statistics-error: ${kafka.external.topic.prefix}statistics.err report-result: ${kafka.external.topic.prefix}query.rs report-error: ${kafka.external.topic.prefix}query.err property: bootstrap.servers: ${kafka.external.bootstrap.servers} internal: mppr-query-request: ${kafka.internal.topic.prefix}mppr.delegate.rq tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp property: bootstrap.servers: ${kafka.internal.bootstrap.servers} statistics: enabled: ${STATISTICS_ENABLED:false} timeout-min: ${STATISTICS_TIMEOUT_MIN:60} datamarts: - name: demo_dev tables: - name: all_types columns: - varchar_c - char_c - bigint_c logging: request-response: query-request: ${QUERY_REQUEST_LOG_ENABLED:false} query-response: ${QUERY_RESPONSE_LOG_ENABLED:false} pf-request: ${PF_REQUEST_LOG_ENABLED:false} pf-response: ${PF_RESPONSE_LOG_ENABLED:false} metrics: port: ${METRICS_PORT:9837} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации **СМЭВ4-адаптера - Модуль исполнения запросов** осуществляется путем редактирования параметров настроек в файле ``application.yml``, где настраиваются секции: - ``http-server`` - указывается порт для подключения; - ``environment`` - указывается название окружения (``test``, ``prod`` и т.д.); - ``executor`` - настраивается размер пула для запросов; - ``send`` - настраиваются ограничения на размер загружаемого файла; - ``query`` - настройка выполнения запросов; - ``zookeeper`` - подключения в Zookeeper; - ``prostore-rest-client`` - блок параметров конфигурирования взаимодействия с :term:`ProStore`; - ``prostore``- указываются настройки подключения к :term:`ProStore`; - ``printable-forms-service`` - настройки подключения к :term:`Сервис формирования документов`; - ``kafka`` - настройки параметров подключения к шине данных Apache Kafka; - ``statistics`` - управление статистикой; - ``logging`` - настройка сохранения лог-файла; - ``metrics`` - настройка получения метрик. Секция http-server ################### В секции ``http-server`` указывается порт веб-сервера. Например: .. code-block:: yaml http: port: ${HTTP_PORT:8090} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``HTTP_PORT:8090``. Секция environment ################## Секция ``environment`` предназначена для настройки параметров окружения. Например: .. code-block:: yaml environment: name: ${ENVIRONMENT_NAME:test} **Параметры настроек** - ``name`` - название окружения (test, prod и т.д.), например: ``ENVIRONMENT_NAME:test``. Секция executor ############### Секция ``executor`` предназначена для указания размера пула для чтения **Kafka** и времени выполнения задач. Например: .. code-block:: yaml 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``. Секция send ########### В секции ``send`` настраиваются ограничения на размер загружаемого файла. Например: .. code-block:: yaml send: channel-size: ${SEND_CHANNEL_SIZE:1} compress: ${SEND_COMPRESS:none} max-message-size: ${SEND_MAX_MESSAGE_SIZE:800000} **Параметры настроек** - ``channel-size`` - размер канала на отправку сообщения, например ``SEND_CHANNEL_SIZE:10``; - ``compress`` - сжатие выгружаемых сообщений (none или zstd), например ``SEND_COMPRESS:none``; - ``max-message-size`` - максимальный размер отправляемого сообщения, например ``SEND_MAX_MESSAGE_SIZE:800000``. Секция query ############ В секции ``query`` выполняется настройка выполнения запросов. Например: .. code-block:: yaml query: data-source-type: for-listagg: ${DATA_SOURCE_TYPE_LISTAGG:ADP} statistics-request: ${DATA_SOURCE_TYPE_STATISTIC:ADP} force-llr-for-order: ${FORCE_LLR_FOR_ORDER:true} force-llr-for-all: ${FORCE_LLR_FOR_ALL:false} llr-rows-limit: ${LLR_ROWS_LIMIT:200} fetch-size: ${FETCH_SIZE:1000} **Параметры настроек** - ``data-source-type`` - выполнение запроса с LISTAGG на (ADB/ADP), например ``DATA_SOURCE_TYPE:ADB``; - ``force-llr-for-order`` - выполнение ORDER BY запроса c использованием пагинации, например ``FORCE_LLR_FOR_ORDER:true``; - ``force-llr-for-all`` - выполнение всех запросов через LLR, например ``FORCE_LLR_FOR_ALL:false``; - ``llr-rows-limit`` - ограничение выгрузки через ЛЛР, при использовании в запросе лимита со значением меньшим, чем указанное значение, например ``LLR_ROWS_LIMIT:200``, будет использован режим LLR; - ``fetch-size`` - размер выгрузки через JDBC, например ``FETCH_SIZE:1000``. .. attention:: Для опции ``force-llr-for-order`` параметр ``false`` можно устанавливать только при развертывании витрины на единственной БД ADP. Секция zookeeper ################ Секция ``zookeeper`` определяет настройки подключения к Zookeeper DS. Например: .. code-block:: yaml zookeeper: connection-string: ${ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000} chroot: ${ZOOKEEPER_DS_CHROOT:/adapter} **Параметры настроек** - ``connection-string`` - подключение в Zookeeper DS, например ``ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal``; - ``connection-timeout-ms`` - Zookeeper DS таймаут подключения, например ``ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000``; - ``session-timeout-ms`` - Zookeeper DS таймаут сессии, например ``ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000``; - ``chroot`` - Zookeeper DS chroot path, например ``ZOOKEEPER_DS_CHROOT:/adapter``. Секция prostore-rest-client ########################### В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с **ProStore**. Например: .. code-block:: yaml prostore-rest-client: 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``. Секция printable-forms-service ############################## Секция ``printable-forms-service`` определяет настройки подключения к :term:`Сервис формирования документов`. Например: .. code-block:: yaml printable-forms-service: host: ${PFS_HOST:localhost} port: ${PFS_PORT:8080} pool-size: ${PFS_POOL_SIZE:10} timeout: ${PFS_TIMEOUT:30} **Параметры настроек** - ``host`` - адрес сервера формирования документов, например ``PFS_HOST:localhost``; - ``port`` - порт сервера формирования документов, например ``PFS_PORT:8080``; - ``pool-size`` - размер пула соединений для ПФ, например ``PFS_POOL_SIZE:10``; - ``timeout`` - таймаут переподключения к сервису формирования документов (секунды), например ``PFS_TIMEOUT:30``. Секция kafka ############ В секции ``kafka`` настраиваются параметры подключения к шине данных **Apache Kafka**. Например: .. code-block:: yaml 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: query-request: topic: ${kafka.external.topic.prefix}query.rq max-concurrent-handle: ${kafka.max-concurrent-handle} commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}query.consumer auto.offset.reset: earliest enable.auto.commit: false query-cancel-request: topic: ${kafka.external.topic.prefix}cancel.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}cancel.query.consumer auto.offset.reset: earliest enable.auto.commit: false metadata-request: topic: ${kafka.external.topic.prefix}metadata.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}metadata.consumer auto.offset.reset: earliest enable.auto.commit: false metadata-new-data-request: topic: ${kafka.external.topic.prefix}metadata.newdata.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}metadata.newdata.consumer auto.offset.reset: earliest enable.auto.commit: false statistics-request: topic: ${kafka.external.topic.prefix}statistics.rq commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}statistics.rq.consumer auto.offset.reset: earliest enable.auto.commit: false report-request: topic: ${kafka.external.topic.prefix}procedure.query.rq max-concurrent-handle: ${kafka.max-concurrent-handle} commit-interval: ${kafka.commit-interval} property: bootstrap.servers: ${kafka.external.bootstrap.servers} group.id: ${kafka.external.topic.prefix}report.rq.consumer auto.offset.reset: earliest enable.auto.commit: false producer: query-result: ${kafka.external.topic.prefix}query.rs query-error: ${kafka.external.topic.prefix}query.err query-estimation-result: ${kafka.external.topic.prefix}}query.estimation.rs query-cancel-result: ${kafka.external.topic.prefix}cancel.rs query-cancel-error: ${kafka.external.topic.prefix}cancel.err metadata-result: ${kafka.external.topic.prefix}metadata.rs metadata-error: ${kafka.external.topic.prefix}metadata.err metadata-newdata-result: ${kafka.external.topic.prefix}metadata.newdata.rs metadata-newdata-error: ${kafka.external.topic.prefix}metadata.newdata.err statistics-result: ${kafka.external.topic.prefix}statistics.rs statistics-error: ${kafka.external.topic.prefix}statistics.err report-result: ${kafka.external.topic.prefix}query.rs report-error: ${kafka.external.topic.prefix}query.err property: bootstrap.servers: ${kafka.external.bootstrap.servers} internal: mppr-query-request: ${kafka.internal.topic.prefix}mppr.delegate.rq tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp property: bootstrap.servers: ${kafka.internal.bootstrap.servers} **Параметры конфигурации** - ``topic`` - префикс для топиков Агента СМЭВ4, например ``AGENT_TOPIC_PREFIX``. Секция statistics ################# Секция ``statistics`` предназначена для управления статистикой. Например: .. code-block:: yaml statistics: enabled: ${STATISTICS_ENABLED:false} timeout-min: ${STATISTICS_TIMEOUT_MIN:60} datamarts: - name: demo_dev tables: - name: all_types columns: - varchar_c - char_c - bigint_c **Параметры конфигурации** - ``enabled`` - включение (true)/ выключение (false) расчета статистики, например ``STATISTICS_ENABLED:false``; - ``timeout-min`` - время обновления статистики (минуты), например ``STATISTICS_TIMEOUT_MIN:60``. Секция logging ############## Секция ``logging`` предназначена для настройки параметров логирования. Например: .. code-block:: yaml logging: request-response: query-request: ${QUERY_REQUEST_LOG_ENABLED:false} query-response: ${QUERY_RESPONSE_LOG_ENABLED:false} pf-request: ${PF_REQUEST_LOG_ENABLED:false} pf-response: ${PF_RESPONSE_LOG_ENABLED:false} **Параметры конфигурации** - ``query-request`` - журналирование query запросов, например ``QUERY_REQUEST_LOG_ENABLED:false``; - ``query-response`` - журналирование query ответов, например ``QUERY_RESPONSE_LOG_ENABLED:false``; - ``pf-request`` - журналирование запросов на сервис формирования документов, например ``PF_REQUEST_LOG_ENABLED:false``; - ``pf-response`` - журналирование ответов от сервиса формирования документов, например ``PF_RESPONSE_LOG_ENABLED:false``. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры конфигурации** - ``port`` - Порт для метрик, например ``METRICS_PORT:9837``.