2. Конфигурация ПОДД-адаптера - Модуль исполнения запросов (application.yml)
Файл application.yml – основной конфигурационный файл ПОДД-адаптера - Модуль исполнения запросов, в котором задана логика и порядок работы адаптера: получение входящих запросов, их обработка, подключение к Сервису формирования документов (секция: printable-forms-service), настройки логирования (секция: logging), а также другие настройки необходимые для корректной работы адаптера. Хинт пагинации FORCE_LLR определен в переменных среды.
3. Пример файла application.yml
Приведем типовую структуру файла и возможные настройки ПОДД-адаптера - Модуль исполнения запросов. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
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: ${DATA_SOURCE_TYPE:ADB}
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:
# Признак использования 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:
datasource:
subprotocol: ${PS_SUBPROTOCOL:prostore}
driver: ${PS_DRIVER:ru.datamart.prostore.jdbc.Driver}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
initialPoolSize: ${PS_INITIAL_POOL_SIZE:5}
maxPoolSize: ${PS_MAX_POOL_SIZE:8}
additional-props:
key: value
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.
Пример конфигурации файла application.yml для ПОДД-адаптера - Модуль исполнения запросов см. в разделе Пример файла application.yml Руководства администратора.
В файле конфигурации ПОДД-адаптера - Модуль исполнения запросов могут быть настроены следующие секции:
http-server- указывается порт для подключения;environment- указывается название окружения (test,prodи т.д.);executor- настраивается размер пула для запросов;send- настраиваются ограничения на размер загружаемого файла;query- настройка выполнения запросов;zookeeper- подключения в Zookeeper;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore. Если false - будет использоваться JDBC-драйвер.prostore- указываются настройки подключения к ProStore;printable-forms-service- настройки подключения к Сервис формирования документов;kafka- настройки параметров подключения к шине данных Apache Kafka;statistics- управление статистикой;logging- настройка сохранения лог-файла;metrics- настройка получения метрик.
4.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http:
port: ${HTTP_PORT:8090}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8090.
4.2. Секция environment
Секция environment предназначена для настройки параметров окружения.
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- название окружения (test, prod и т.д.), например: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}
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.
4.5. Секция query
В секции query выполняется настройка выполнения запросов.
Например:
query:
data-source-type: ${DATA_SOURCE_TYPE:ADB}
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.
4.6. Секция zookeeper
Секция zookeeper определяет настройки подключения в zookeeper DS.
Например:
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.
4.7. Секция 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.8. Секция prostore
Секция prostore определяет настройки подключения к ProStore.
Например:
prostore:
datasource:
subprotocol: ${PS_SUBPROTOCOL:prostore}
driver: ${PS_DRIVER:ru.datamart.prostore.jdbc.Driver}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
initialPoolSize: ${PS_INITIAL_POOL_SIZE:5}
maxPoolSize: ${PS_MAX_POOL_SIZE:8}
additional-props:
key: value
Параметры конфигурации
subprotocol- Subprotocol для JDBC, напримерPS_SUBPROTOCOL:prostore;driver- имя класса JDBC драйвера, напримерPS_DRIVER:ru.datamart.prostore.jdbc.Driver;host- адрес Prostore, напримерPS_HOST:t5-prostore-01.ru-central1.internal;port- порт Prostore, напримерPS_PORT:9195;initialPoolSize- начальное число подключений к Prostore, напримерPS_INITIAL_POOL_SIZE:5;maxPoolSize- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8.
4.9. Секция printable-forms-service
Секция printable-forms-service определяет настройки подключения к Сервис формирования документов.
Например:
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.
4.10. Секция kafka
В секции kafka собраны настройки параметров подключения к шине данных Apache 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:
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- префикс для топиков агента ПОДД, напримерAGENT_TOPIC_PREFIX.
4.11. Секция statistics
Секция statistics предназначена для управления статистикой.
Например:
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.
4.12. Секция logging
Секция logging предназначена для настройки параметров логирования.
Например:
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.
4.13. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9837.