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