Сервис для отправки сообщений в федеральную СМЭВ3

smev3 link

Pipiline status

Предназначение

Отправка и получение сообщений в СМЭВ3

Переменные окружения

Переменные для конфигурирования подключения к RabbitMQ: MQ_HOST, MQ_PORT, CA_CERT, CLIENT_CERT, CLIENT_KEY

Переменные для конфигурирования подключения к БД: DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER, DATABASE_PASS.

Название Описание    
SMEV_KEY Ключ СМЭВ3    
SMEV_CERT Сертификат СМЭВ3    
NODE_ID Параметр node_id для сообщения СМЭВ3    
SMEV_GET_FILTER Фильтры для GetResponse. Формат: "ns1|name1;ns2|name2"    
SMEV_SIGN_ALGORITHM Алгоритм подписи (gost2001,gost12_256,gost12_512)    
SMEV_DGST_ALGORITHM Алгоритм хеширования (gost2001,gost12_256,gost12_512)    
SMEV_SKIP_SIGN_CHECK Пропуск проверки подписи СМЭВ3 (true,false)    
ELASTIC_HOST ip для подключения к ElasticSearch    
ELASTIC_PORT port для подключения к ElasticSearch    
SMEV_ACK_UNKNOWN подтверждать ли сообщения с неизвестным smev_message_id(true,false)    
SMEV_SAVE_UNKNOWN_LOGS логировать ли сообщения с неизвестным smev_message_id(true,false)    
SERVICE_USE_PRODUCTION Отвечает за наличие признака TestMsg в сообщениях СМЭВ. НЕ СВЯЗАН С ПЕРЕКЛЮЧЕНИЕМ ТЕСТОВОГО/ПРОДУКТОВОГО КОНТУРА СМЭВ    
SMEV_ENDPOINT Переключает адрес подключения к СМЭВ3. Именно этот параметр переключает тестовый/продуктовый контур СМЭВ3. Допустимые значения:
<ul><li>http://smev3-n0.test.gosuslugi.ru:7500/ws?wsdl</li><li>http://172.20.3.12:7500/ws?wsdl - может иметь другое значение</li></ul>
   
CRYPTO_PROVIDER Способ подписания (cryptopro signer openssl)
CRYPTOPRO_KPS Имя сертификата для поиска для режима КриптоПРО    
CRYPTOPRO_PIN Пин доступа к токену для режима КриптоПРО    
SIGNER_URL Адрес сервиса подписания для режима signer    
SIGNER_SRV_CERT Сертификат сервиса подписания    
SIGNER_CLIENT_CERT Сертификат для подключения к сервису подписания    
SIGNER_CLIENT_KEY Ключ для подключения к сервису подписания    

Пример json запроса

Для проверки настройки сервиса можно отправить в консоли MQ следующий запрос:

Заголовки:

{
  "type": "Smev3Request",
  "ticket": "TICKET_UNIQ_ID",
  "reply_to": "test",
  "consumer": "test",
  "user_id": "test"
}

Тело:

{
  "envelope": "<tns:ESIADataVerifyRequest xmlns:tns=\"urn://mincomsvyaz/esia/uprid/1.4.0\" xmlns:ns2=\"urn://mincomsvyaz/esia/commons/rg_sevices_types/1.4.0\">
<tns:RoutingCode>DEV</tns:RoutingCode>
<tns:passportSeries>1111</tns:passportSeries>
<tns:passportNumber>111111</tns:passportNumber>
<tns:lastName>Тестов</tns:lastName>
<tns:firstName>Тест</tns:firstName>
<tns:middleName>Тестович</tns:middleName>
<tns:snils>229-785-346 20</tns:snils>
</tns:ESIADataVerifyRequest>"
}

Телеметрия

При настроенном адресе ElasticSearch сервис шлет телеметрию в следующем виде:

{
  "_index": "aggredator_YYYY-MM-DD",
  "_source": {
    "event": "service.request.status",
    "event_id": "02a35e2c9998e4018062",
    "started": "2019-04-08T14:07:32.140+03:00",
    "finished": "2019-04-08T14:07:32.140+03:00",
    "duration": 0.000029052,
    "data": {
      "from": 102,
      "to": 200,
      "text": "",
      "id": 3289,
      "ticket": "78dd8b37-59ee-11e9-b38d-309c23099aca",
      "service": "test",
      "processing_code": "7b825678-59ee-11e9-978c-0242ac13000a",
      "request_to_smev_at": "2019-04-08T11:07:22.000Z",
      "response_to_smev_at": "2019-04-08T11:07:28.000Z",
      "response_from_smev_at": "2019-04-08T11:07:31.951Z",
      "smev_duration": 6,
      "total_duration": 9.951
    },
    "certs": {
      "smev_cert_not_after": "2020-03-28T15:42:54.000Z",
      "service_cert_not_after": "2020-03-21T15:49:33.000Z",
      "mq_ca_cert_not_after": "2020-03-21T15:49:31.000Z",
      "cn": "smev3"
    },
    "service": {
      "app": "smev3",
      "service": "smev3",
      "aggredator": "unknown"
    },
    "system": {
      "cpu": "x86_64",
      "os": "linux",
      "hostname": "9ee52afc2d9b"
    },
    "@timestamp": "2019-04-08T14:07:32.141+03:00"
  }
}

Тип события передается в поле event

Название Описание
smev3.request.send Отправка HTTP сообщения в СМЭВ3 при постановке запроса
smev3.request.parse Разбор ответа от СМЭВ3 при постановке запроса
smev3.result.get Отправка HTTP сообщения в СМЭВ3 при проверке входной очереди
smev3.result.parse Разбор ответа от СМЭВ3 при проверке входной очереди
smev3.result.unregistered Появления сообщения с неизвестным идентификатором
smev3.result.result Появление ответа на ранее отправленный запрос
service.request.status Изменение статуса запроса(100->102->200) и тайминги конкретного запроса
dispatcher.request Служебное. Получение входного сообщения от MQ
dispatcher.result_rejected Служебное. Ошибка отпарвки сообщения в MQ
dispatcher.exception Служебное. Ошибка при обработке сообщения от MQ

Метрики сервиса:

{
  "_index": "aggredator_2019-04-08",
  "_source": {
    "gauges": true,
    "event": "gauge",
    "queues": {
      "pending": 343,
      "wait_request": 0,
      "wait_response": 343
    },
    "certs": {
      "smev_cert_not_after": "2020-03-28T15:42:54.000Z",
      "service_cert_not_after": "2020-03-21T15:49:33.000Z",
      "mq_ca_cert_not_after": "2020-03-21T15:49:31.000Z",
      "cn": "smev3"
    },
    "service": {
      "app": "smev3",
      "service": "smev3",
      "aggredator": "unknown"
    },
    "system": {
      "cpu": "x86_64",
      "os": "linux",
      "hostname": "9ee52afc2d9b"
    },
    "@timestamp": "2019-04-08T14:51:47.825+03:00"
  }
}
Название Описание
queues.pending общее число входящих запросов, требующих обработки в СМЭВ3(сумма wait_request + wait_response)
queues.wait_request число запросов еще не отпарвленных в СМЭВ3
queues.wait_response число запросов уже отправленных в СМЭВ3, но ожидающих ответа
  • Сервис для отправки сообщений в федеральную СМЭВ3
  • Pipiline status
  • Предназначение
  • Переменные окружения
  • Пример json запроса
  • Телеметрия
  • Подавай заявку сейчас

    Оставьте свои контактные данные и наш менеджер свяжется с вами в ближайшее время