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.