.. _smev-option:
Конфигурация СМЭВ3-адаптер (application.yml)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл ``application.yml`` – основной конфигурационный файл **CМЭВ3-адаптера**,
в котором задана логика и порядок работы адаптера: получение входящих
запросов, их обработка, а также настройка подключения к :term:`СМЭВ` и FTP-серверу СМЭВ3, к :term:`Prostore` через
:term:`JDBC-драйвер`, :term:`BLOB-адаптер`, настройка алгоритма формирования и проверки электронной подписи(ЭП) и т.д.
.. _smev3_application_yml:
Пример файла application.yml
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: yaml
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: {}
Параметры конфигурации
^^^^^^^^^^^^^^^^^^^^^^
Настройка конфигурации **CМЭВ3-адаптера** осуществляется путем редактирования параметров настроек в файле ``application.yml``.
Пример конфигурации файла ``application.yml`` для **CМЭВ3-адаптера** см. в разделе :ref:`smev3_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`` - блок параметров конфигурирования взаимодействия с :term:`ProStore`. Если false - будет использоваться JDBC-драйвер;
- ``datasource`` – параметры подключения к :term:`ProStore`;
- ``environment`` - настройки окружения;
- ``zookeeper`` – параметры подключения к :term:`Zookeeper`;
- ``migration`` – настройка параметров миграции сервисной базы данных **CМЭВ3-адаптера**` в базу данных :term:`Zookeeper`;
- ``paramstorage`` – указывается корневой путь хранилища параметров;
- ``deltastorage`` – указывается корневой путь хранилища дельт;
- ``sign`` - настройка формирования и проверки электронной подписи(ЭП) в SOAP-пакетах СМЭВ3.
- ``blob`` - интеграция с :term:`BLOB-адаптер`;
- ``rest`` - настройки подключения для возможности выполнения rest-запросов к СМЭВ3-адаптеру и получения ответов на них;
- ``scheduler`` - настройка планировщика заданий (запуск дельт по расписанию);
- ``pool`` - размер прерываемого кода;
- ``logging`` – настраивается логирование работы модуля;
- ``backup`` - настройки бекапирования;
- ``spf`` - Параметры подключения к сервису печатных форм. Указывается при использовании функции toSpf.
Секция vertx
############
Секция ``vertx`` предназначена для настройки параметров фреймворка Vert.x (подробнее на сайте разработчиков: https://vertx.io/docs/). Для включения сбора метрик используйте следующий код:
.. code-block:: yaml
vertx:
#Настройки вертикса
#тут можно указать все настройки из документации для vertx
props:
# метрики
metricsOptions:
enabled: true
# тип метрик, например prometheusOptions | jmxMetricsOptions
prometheusOptions:
enabled: true
startEmbeddedServer: true
embeddedServerOptions:
#порт для сервера с метриками
port: 9033
web-client:
max-pool-size: 20
Секция spring
#############
Секция ``spring`` подключение к фреймворку spring boot (используется для разработки).
Например:
.. code-block:: yaml
spring:
liquibase:
enabled: false
main:
allow-bean-definition-overriding: true
.. _section-smev:
Секция smev
###########
Секция ``smev`` отвечает за настройки подключения к :term:`СМЭВ3`.
Например:
.. code-block:: yaml
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`` - пул коннектов.
.. note:: Для удобного отслеживания в лог-файлах всех запросов/ответов к СМЭВ3 в рамках одной бизнес-операции, в файл ``logback-json.xml`` добавлен параметр ``ReqMessageID``. При обработке ошибки от СМЭВ3, в лог-файл добавляется описание ошибки и код ошибки СМЭВ3 (в том случае, если СМЭВ3 вернул данный код в блоке ``description``).
Секция receiver
###############
Секция ``receiver`` предназначена для настройки параметров взаимодействия СМЭВ-запросов с peblle-шаблонами.
Например:
.. code-block:: yaml
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``, например:
::
**Пример файла smev.xml.peb**
.. code-block::
{% set my_blob = fromblob ("/Picture_13.jpg", "my_fname", "my_mime") %}
{{ toftp ("some test 1", "file.txt", "text/plain") }}
{{ toftp ("some test 2", "file.txt", "text/plain") }}
{{ toftp ("some test 3", "file2.txt", "text/plain") }}
{{ tomtom (my_blob, my_mime) }}
**Пример файла fallback.xml**
Ответ при ошибке обработки запроса.
.. code-block::
Произошла ошибка при обработке запроса: %error_message%
Секция prostore-rest-client
###########################
В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с ProStore.
Например:
.. code-block:: yaml
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``.
Секция environment
##################
В секции ``environment`` указывается среда разработки (dev, test, stable, prod)
Например:
.. code-block:: yaml
environment:
name: ${ENVIRONMENT_NAME:test}
**Параметры настроек**
- ``name`` - Название окружения, например ``ENVIRONMENT_NAME:test``.
Секция zookeeper
################
Секция ``zookeeper`` предназначена для настройки параметров подключения к :term:`Zookeeper`.
Например:
.. code-block:: yaml
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`` - максимальное значение таймаута ожидания при повторных запросах.
Секция migration
################
Секция ``migration`` реализована настройка миграции зукипера для задачи бекапирования.
Например:
.. code-block:: yaml
migration:
zk-enabled: ${MIGRATION_ZK_ENABLE:false}
**Параметры настроек**
- ``enabled`` - подключение миграции, например ``{MIGRATION_ENABLE:false}``.
Секция paramstorage
###################
В секции ``paramstorage`` указывается корневой путь до сервера Zookeeper для механизма параметров (ключ-значение).
Например:
.. code-block:: yaml
paramstorage:
base-path: '/smev/paramstorage'
Секция deltastorage
###################
В секции ``deltastorage`` указывается корневой путь до сервера Zookeeper для механизма дельт.
Например:
.. code-block:: yaml
deltastorage:
base-path: '/smev/deltastorage'
Секция sign
###########
Секция ``sign`` предназначена для формирования и проверки электронной подписи(ЭП) в SOAP-пакетах СМЭВ3.
Например:
.. code-block:: yaml
sign:
digest-algorithm: 1.2.643.7.1.1.2.2
- ``digest-algorithm`` - алгоритм ключа проверки электронной подписи.
Секция blob
###########
Секция ``blob`` предназначена для настройки взаимодействия модуля *СМЭВ3-адаптер* с:
- **BLOB-адаптером** для считывания BLOB-полей (см. :ref:`connect_blob_smev`);
- FTP-сервером СМЭВ3, на который модуль *СМЭВ3-адаптер* выгружает содержимое BLOB-полей и/или большие табличные данные.
Например:
.. code-block:: yaml
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.
Секция rest
###########
Секция ``rest`` предназначена для настройки возможности выполнения REST-запросов к СМЭВ3-адаптеру и получения ответов на них.
Например:
.. code-block:: yaml
rest:
#вкл/выкл
enabled: false
#порт на котором будет запущена рестовая ручка
port: 8080
# путь get запроса
get: /le
#путь post запроса
post: /le
#обрабатываемый шаблон
template: smev3-adapter/templates/smev.xml.peb
Секция scheduler
################
Секция ``scheduler`` предназначена для настройки планировщика заданий в случае, если планируется использовать механизм отправки дельт по расписанию.
Например:
.. code-block:: yaml
scheduler:
enabled: true
interval: PT30s
template: templates/pfr-delta.peb
**Параметры настроек**
- ``enabled`` - включение планировщика заданий;
- ``interval`` - интервал между отправкой дельт;
- ``template`` - путь к Pebble-шаблону;
Секция pool
###########
В секции ``pool`` указывается размер прерываемого кода.
Например:
.. code-block:: yaml
pool:
reader-executor: 20
schedule-executor: 1
restExecutor: 1
logExecutor: 20
Секция logging
##############
В секции ``logging`` настраивается логирование работы модуля.
Например:
.. code-block:: yaml
logging:
request-response:
smev-request: false
smev-response: false
**Параметры настроек**
- ``smev-request`` - логирование запросов;
- ``smev-response`` - логирование ответов.
Секция backup
##############
Секция ``backup`` предназначена для настроек бекапирования модуля.
Например:
.. code-block:: yaml
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}``.
Секция spf
##############
В секции ``spf`` указываются параметры подключения к сервису печатных форм. Указывается при использовании функции toSpf.
Например:
.. code-block:: yaml
spf:
host: ${SPF_HOST:localhost}
port: ${SPF_PORT:8080}
# Дополнительные параметры. Указываются ключ-значения сертификатов, необходимых для сервиса ПФ
params: {}
**Параметры настроек**
- ``host`` - адрес подключения, например ``{SPF_HOST:localhost}``;
- ``port`` - порт подключения, например: ``{SPF_PORT:8080}``;
- ``params`` - Дополнительные параметры. Указываются ключ-значения сертификатов, необходимых для сервиса ПФ.