3. Конфигурация СМЭВ3-адаптер (application.yml)
Файл application.yml – основной конфигурационный файл CМЭВ3-адаптера,
в котором задана логика и порядок работы адаптера: получение входящих
запросов, их обработка, а также настройка подключения к СМЭВ и FTP-серверу СМЭВ3, к Prostore через
JDBC-драйвер, BLOB-адаптер, настройка алгоритма формирования и проверки электронной подписи(ЭП) и т.д.
4. Пример файла application.yml
vertx:
#Настройки вертикса
#тут можно указать все настройки из документации для vertx
props:
# метрики
metricsOptions:
enabled: true
# тип метрик, например prometheusOptions | jmxMetricsOptions
prometheusOptions:
enabled: true
startEmbeddedServer: true
embeddedServerOptions:
#порт для сервера с метриками
port: 9033
web-client:
max-pool-size: 20
spring:
liquibase:
enabled: false
main:
allow-bean-definition-overriding: true
smev:
#url смэва
endpointUrl: http://localhost:7979/api/v1/soap/
keystoreType: "DUMMY"
keystoreFile: x
keystorePass: x
privateKeyAlias: x
privateKeyPass: x
certificateAlias: x
signatureURI: "http://www.w3.org/2001/04/xmldsig-more#dummy"
# алгоритм подписи
signatureAlgorithm: "DUMMY"
#метод подписи
digestMethod: "http://www.w3.org/2001/04/xmldsig-more#dummy"
#версия схемы смев
#availiabe 1.2 and 1.3
version: 1.3
#верификация входящих сообщений
incomingVerificationEnabled: false
#подпись исходящих сообщений
outgoingSigningEnabled: false
#таймаут отправки сообщения в смев
timeout: 30000
#время между попытками перепосылки в смев
retry-timeout: 30000
#максимальный размер очереди, ожидающей отправки сообщений
webMaxWaitQueueSize: -1
#пул коннектов
webMaxPoolSize: 20
receiver:
# количество вертиклов
instances: 1
receiver-property:
-
#селектор из смэв
selector:
namespace: a
root-element-name: b
#пебл шаблон, который будет обрабатываться для определенного selector
template: smev3-adapter/templates/smev.xml.peb
#задержка между запросами, в случае если очередб пуста
idle-delay: PT1m
# файл, который будет отправлен в случае ошибки
fallback-response: smev3-adapter/templates/fallback.xml
-
idle-delay: PT1m
selector:
namespace: urn://x-artefacts-testperson/1.0
root-element-name: TestPersonRequest
template: smev3-adapter/templates/smev.xml.peb
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}
default-schema: demo_view
environment:
name: ${ENVIRONMENT_NAME:test}
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal}
retryPolicy:
baseSleepTime: 1000
maxRetries: 3
maxSleepTime: 3000
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
migration:
zk-enabled: ${MIGRATION_ZK_ENABLE:false}
paramstorage:
base-path: '/smev/paramstorage'
deltastorage:
base-path: '/smev/deltastorage'
sign:
#алгоритм подписи файла
digest-algorithm: 1.2.643.7.1.1.2.2
blob:
# настройки подключения к BLOB адаптеру
blob-source:
host: 'localhost'
port: 8080
path:
ftp-destination:
#хост фтп смева
host: localhost
#порт фтп смева
port: 21
#корневой каталог
#path: aaa/bbb/ccc
#пользователь
user: user
#пароль
password: 123
rest:
#вкл/выкл
enabled: false
#порт на котором будет запущена рестовая ручка
port: 8080
# путь get запроса
get: /le
#путь post запроса
post: /le
#обрабатываемый шаблон
template: smev3-adapter/templates/smev.xml.peb
#рассылка смев
scheduler:
#вкл/выкл
enabled: false
#интервал между запусками
interval: PT30s
#обрабатываемый шаблон
template: smev3-adapter/templates/pfr-delta.peb
pool:
#корутин пул для обработки смев шаблонов
reader-executor: 20
#корутин пул для обработки шедулера
schedule-executor: 1
logExecutor: 20
logging:
level:
root: info
ru:
rtlabs:
smev:
logging: trace
request-response:
smev-request: true
smev-response: true
backup:
zk-path: ${SMEV3_BACKUP_ZK_PATH:/${environment.name}/smev3-adapter}
commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command}
adapterCommandBroadcast: ${S3A_ADAPTER_COMMAND_BROADCAST_TOPIC:adapter.command.broadcast}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
timeout: ${BACKUP_TIMEOUT:PT180s}
kafka:
consumer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
group.id: ${SMEV3_BACKUP_GROUP_ID:smev3-adapter_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
# Параметры подключения к сервису печатных форм. Указывается при использовании функции toSpf
spf:
host: ${SPF_HOST:localhost}
port: ${SPF_PORT:8080}
# Дополнительные параметры. Указываются ключ-значения сертификатов, необходимых для сервиса ПФ
params: {}
5. Параметры конфигурации
Настройка конфигурации CМЭВ3-адаптера осуществляется путем редактирования параметров настроек в файле application.yml.
Пример конфигурации файла application.yml для CМЭВ3-адаптера см. в разделе Пример файла application.yml Руководства администратора.
Обязательными параметрами для настройки CМЭВ3-адаптера являются секции: smev, receiver, datasource. Остальные параметры следует оставить без изменения и настраивать только для решения определенных бизнес-задач.
Pebble-шаблоны для настройки задаются в секциях: receiver-property, rest и scheduler.
Для каждого вида сведений, предоставляемых Витриной, следует создать отдельное сопоставление receiver и установить значения receiver-property. Остальные параметры следует оставить без изменения.
В файле конфигурации могут быть настроены следующие секции:
vertx– настройка параметров фреймворка Vert.x (подробнее на сайте разработчиков: https://vertx.io/docs/).spring– подключение к фреймворку spring boot (используется для разработки);smev– настройки подключения к CМЭВ3-адаптеру;receiver- настройка взаимодействия СМЭВ-запросов с Peblle-шаблонами (для каждогоreceiverможно настроить количествоinstance);prostore-api-client- блок параметров конфигурирования взаимодействия с ProStore. Если false - будет использоваться JDBC-драйвер;datasource– параметры подключения к ProStore;environment- настройки окружения;zookeeper– параметры подключения к Zookeeper;migration– настройка параметров миграции сервисной базы данных **CМЭВ3-адаптера**` в базу данных Zookeeper;paramstorage– указывается корневой путь хранилища параметров;deltastorage– указывается корневой путь хранилища дельт;sign- настройка формирования и проверки электронной подписи(ЭП) в SOAP-пакетах СМЭВ3.blob- интеграция с BLOB-адаптер;rest- настройки подключения для возможности выполнения rest-запросов к СМЭВ3-адаптеру и получения ответов на них;scheduler- настройка планировщика заданий (запуск дельт по расписанию);pool- размер прерываемого кода;logging– настраивается логирование работы модуля;backup- настройки бекапирования;spf- Параметры подключения к сервису печатных форм. Указывается при использовании функции toSpf.
5.1. Секция vertx
Секция vertx предназначена для настройки параметров фреймворка Vert.x (подробнее на сайте разработчиков: https://vertx.io/docs/). Для включения сбора метрик используйте следующий код:
vertx:
#Настройки вертикса
#тут можно указать все настройки из документации для vertx
props:
# метрики
metricsOptions:
enabled: true
# тип метрик, например prometheusOptions | jmxMetricsOptions
prometheusOptions:
enabled: true
startEmbeddedServer: true
embeddedServerOptions:
#порт для сервера с метриками
port: 9033
web-client:
max-pool-size: 20
5.2. Секция spring
Секция spring подключение к фреймворку spring boot (используется для разработки).
Например:
spring:
liquibase:
enabled: false
main:
allow-bean-definition-overriding: true
5.3. Секция smev
Секция smev отвечает за настройки подключения к СМЭВ3.
Например:
smev:
endpointUrl: http://127.0.0.1:7979/api/v1/soap/
keystoreType: "DUMMY"
keystoreFile: x
keystorePass: x
privateKeyAlias: x
privateKeyPass: x
certificateAlias: x
signatureURI: "http://www.w3.org/2001/04/xmldsig-more#dummy"
signatureAlgorithm: "DUMMY"
digestMethod: "http://www.w3.org/2001/04/xmldsig-more#dummy"
incomingVerificationEnabled: false
outgoingSigningEnabled: true
#таймаут отправки сообщения в смев
timeout: 30000
#время между попытками перепосылки в смев
retry-timeout: 30000
#максимальный размер очереди, ожидающей отправки сообщений
webMaxWaitQueueSize: -1
#пул коннектов
webMaxPoolSize: 20
В случае, когда СМЭВ3 не отвечает на запрос, в новой версии СМЭВ3-адаптера (секция smev), добавлена возможность, которая позволяет задать время ожидания ответа (timeout) перед повторной отправкой запроса к СМЭВ3:
timeout- таймаут отправки сообщения в СМЭВ3;retry-timeout- время между повторной попыткой отправки запроса в СМЭВ3;webMaxWaitQueueSize- максимальный размер очереди, ожидающей отправки сообщений;webMaxPoolSize- пул коннектов.
Примечание
Для удобного отслеживания в лог-файлах всех запросов/ответов к СМЭВ3 в рамках одной бизнес-операции, в файл logback-json.xml добавлен параметр ReqMessageID. При обработке ошибки от СМЭВ3, в лог-файл добавляется описание ошибки и код ошибки СМЭВ3 (в том случае, если СМЭВ3 вернул данный код в блоке description).
5.4. Секция receiver
Секция receiver предназначена для настройки параметров взаимодействия СМЭВ-запросов с peblle-шаблонами.
Например:
receiver:
receiver-property:
-
selector:
namespace: a
root-element-name: b
template: templates/smev.xml.peb
idle-delay: PT1m
fallback-response: templates/fallback.xml
-
selector:
namespace: urn://x-artefacts-testperson/1.0
root-element-name: TestPersonRequest
template: templates/smev.xml.peb
idle-delay: PT1s
Параметры настроек
namespace- пространство имен в XML.root-element-name- имя корневого элемента запроса обрабатываемого ВС (как указано в заявке на регистрацию ВС);templateИмя файла, содержащего pebble-шаблон обработки запросов для данного ВС;idle-delay- периодичность опроса очереди СМЭВ3 для получения новых запросов (в формате ISO 8601).mtom-xop-postfix- включение бинарных данных посредством ссылкиxop, например:
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" ref="cid:320038b2-0485-4658-89cc-980b7c8b5193@smev_client"/>
Пример файла smev.xml.peb
Пример файла fallback.xml
Ответ при ошибке обработки запроса.
5.5. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore.
Например:
prostore-rest-client:
# Признак использования rest-api для взаимодействия с простором.
enabled: true
host: ${PS_HOST:t5-prostore-01.ru-central1.internal}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
Параметры настроек
host- адрес Prostore, напримерPS_HOST:t5-prostore-01.ru-central1.internal;port- порт Prostore, напримерPS_PORT:9195;max-pool-size- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8.
5.6. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod)
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- Название окружения, напримерENVIRONMENT_NAME:test.
5.7. Секция zookeeper
Секция zookeeper предназначена для настройки параметров подключения к Zookeeper.
Например:
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal}
retryPolicy:
baseSleepTime: 1000
maxRetries: 3
maxSleepTime: 3000
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
Параметры настроек
connect-string- адреса серверов для подключения к Zookeeper (разделитель -,);baseSleepTime- начальное значение таймаута ожидания при повторных запросах;maxRetries- максимальное количество повторных запросов;maxSleepTime- максимальное значение таймаута ожидания при повторных запросах.
5.8. Секция migration
Секция migration реализована настройка миграции зукипера для задачи бекапирования.
Например:
migration:
zk-enabled: ${MIGRATION_ZK_ENABLE:false}
Параметры настроек
enabled- подключение миграции, например{MIGRATION_ENABLE:false}.
5.9. Секция paramstorage
В секции paramstorage указывается корневой путь до сервера Zookeeper для механизма параметров (ключ-значение).
Например:
paramstorage:
base-path: '/smev/paramstorage'
5.10. Секция deltastorage
В секции deltastorage указывается корневой путь до сервера Zookeeper для механизма дельт.
Например:
deltastorage:
base-path: '/smev/deltastorage'
5.11. Секция sign
Секция sign предназначена для формирования и проверки электронной подписи(ЭП) в SOAP-пакетах СМЭВ3.
Например:
sign:
digest-algorithm: 1.2.643.7.1.1.2.2
digest-algorithm- алгоритм ключа проверки электронной подписи.
5.12. Секция blob
Секция blob предназначена для настройки взаимодействия модуля СМЭВ3-адаптер с:
BLOB-адаптером для считывания BLOB-полей (см. Взаимодействие через СМЭВ3-адаптер);
FTP-сервером СМЭВ3, на который модуль СМЭВ3-адаптер выгружает содержимое BLOB-полей и/или большие табличные данные.
Например:
blob:
# настройки подключения к BLOB адаптеру
blob-source:
host: 'localhost'
port: 8080
path:
ftp-destination:
#хост фтп смева
host: localhost
#порт фтп смева
port: 21
#корневой каталог
#path: aaa/bbb/ccc
#пользователь
user: user
#пароль
password: 123
blob-source- настройка подключения к BLOB-адаптеру;ftp-destination- настройка подключения к FTP-серверу СМЭВ3.
5.13. Секция rest
Секция rest предназначена для настройки возможности выполнения REST-запросов к СМЭВ3-адаптеру и получения ответов на них.
Например:
rest:
#вкл/выкл
enabled: false
#порт на котором будет запущена рестовая ручка
port: 8080
# путь get запроса
get: /le
#путь post запроса
post: /le
#обрабатываемый шаблон
template: smev3-adapter/templates/smev.xml.peb
5.14. Секция scheduler
Секция scheduler предназначена для настройки планировщика заданий в случае, если планируется использовать механизм отправки дельт по расписанию.
Например:
scheduler:
enabled: true
interval: PT30s
template: templates/pfr-delta.peb
Параметры настроек
enabled- включение планировщика заданий;interval- интервал между отправкой дельт;template- путь к Pebble-шаблону;
5.15. Секция pool
В секции pool указывается размер прерываемого кода.
Например:
pool:
reader-executor: 20
schedule-executor: 1
restExecutor: 1
logExecutor: 20
5.16. Секция logging
В секции logging настраивается логирование работы модуля.
Например:
logging:
request-response:
smev-request: false
smev-response: false
Параметры настроек
smev-request- логирование запросов;smev-response- логирование ответов.
5.17. Секция backup
Секция backup предназначена для настроек бекапирования модуля.
Например:
backup:
zk-path: ${SMEV3_BACKUP_ZK_PATH:/${environment.name}/smev3-adapter}
commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command}
adapterCommandBroadcast: ${S3A_ADAPTER_COMMAND_BROADCAST_TOPIC:adapter.command.broadcast}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
timeout: ${BACKUP_TIMEOUT:PT180s}
kafka:
consumer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
group.id: ${SMEV3_BACKUP_GROUP_ID:smev3-adapter_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
Параметры настроек
zk-path- путь к корневой ноде zookeeper для бэкапирования, например{COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters};commandTopic- топик команд бэкапирования, например:{BACKUP_COMMAND_TOPIC:adapter.command};backupTopic- топик для отправки забэкапированных данных, например:{BACKUP_TOPIC:adapter.backup};statusTopic- топик для отправки статусов бэкапирования, например:{STATUS_TOPIC:adapter.status}.
5.18. Секция spf
В секции spf указываются параметры подключения к сервису печатных форм. Указывается при использовании функции toSpf.
Например:
spf:
host: ${SPF_HOST:localhost}
port: ${SPF_PORT:8080}
# Дополнительные параметры. Указываются ключ-значения сертификатов, необходимых для сервиса ПФ
params: {}
Параметры настроек
host- адрес подключения, например{SPF_HOST:localhost};port- порт подключения, например:{SPF_PORT:8080};params- Дополнительные параметры. Указываются ключ-значения сертификатов, необходимых для сервиса ПФ.