.. _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`` - Дополнительные параметры. Указываются ключ-значения сертификатов, необходимых для сервиса ПФ.