Войти

5.3. Организация очередей

5.3.1. Получение сообщения без фильтрации по протоколу обмена

Для получения сообщения из очереди без фильтрации по протоколу обмена необходимо вызвать метод GetRequest (или GetResponse) единого электронного сервиса СМЭВ, без указания параметров MessageTypeSelector/NamespaceURI и MessageTypeSelector/RootElementLocalName.

В целях снижения вычислительной нагрузки, обусловленной криптооперациями по расчету и шифрованию хэша электронной подписи, допускается использование сообщений GetRequest (или GetResponse) значение элемента метка времени (MessageTypeSelector /Timestamp) в которых, отстает от момента отправки этого сообщения в Единый Сервис на значение, не превышающее установленный норматив -  допустимая дельта действия временной метки.

После истечения срока действия временной метки, сообщение необходимо сформировать повторно. Со значением допустимой дельты можно ознакомиться в Единой системе контекстных справок (ЕСКС) в разделе «База знаний» блок «Часто задаваемые вопросы» пункт «Дополнительная проверка Timestamp в механизм обработки сообщений на стороне СМЭВ 3» (расположен по ссылке) или направить запрос в СЭ СМЭВ  в адрес Ситуационного центра (На почту sd@sc.digital.gov.ru или через ЛК УВ https://sc.digital.gov.ru)

5.3.2. Получение сообщения с фильтрацией по протоколу обмена

Чтобы использовать сценарий фильтрации по версии протокола обмена, необходимо при вызове метода GetRequest (GetResponse) заполнить параметры MessageTypeSelector/NamespaceURI и MessageTypeSelector/RootElementLocalName. Для корректного получения сообщения с фильтрацией необходимо заполнять оба параметра, не допускается наличие одного из заполненных элементов. В качестве аргумента MessageTypeSelector/NamespaceURI передаётся target namespace схемы, в которой описан элемент, а в качестве аргумента MessageTypeSelector/RootElementLocalName – имя (local name) элемента. В случае, если УВ использует несколько версий протокола обмена, то фильтрация осуществляется по всем доступным версиям протокола обмена, вне зависимости от указания NamespaceURI.

Если описание формата протокол обмена имеет несколько версий, то можно указать qualified name элемента-запроса из любой версии описания. При этом будут выбираться все сообщения, соответствующие данному протоколу обмена, независимо от того, какой версии формата они соответствуют.

В методе GetResponse для задания протокола обмена можно использовать как qualified name элемента – запроса, так и qualified name элемента – ответа. Это же относится и к методу GetRequest.

В целях снижения вычислительной нагрузки, обусловленной криптооперациями по расчету и шифрованию хэша электронной подписи, допускается использование сообщений GetRequest (или GetResponse) значение элемента метка времени (MessageTypeSelector /Timestamp) в которых, отстает от момента отправки этого сообщения в Единый Сервис на значение не превышающее  установленный норматив -  допустимая дельта действия временной метки.  

После истечения срока действия временной метки, сообщение необходимо сформировать повторно. Со значением допустимой дельты можно ознакомиться в Единой системе контекстных справок (ЕСКС) в разделе «База знаний» блок «Часто задаваемые вопросы» пункт «Дополнительная проверка Timestamp в механизм обработки сообщений на стороне СМЭВ 3» (расположен по ссылке) или направить запрос в Службу эксплуатации СМЭВ  в адрес Ситуационного центра (На почту sd@sc.digital.gov.ru или через Личный кабинет https://sc.digital.gov.ru)

Получение сообщений с фильтрацией по виду сведений возможно при размере очереди входящих сообщений ИС, не превышающей рекомендованного в разделе 4.8 значения квоты.

5.3.3 Подтверждение приёма сообщения

Особенностью организации очередей входящих сообщений в СМЭВ является необходимость подтверждения ИС УВ получения сообщения из СМЭВ. Если в течение 15 минут этого не происходит, то сообщение считается недоставленным и возвращается в очередь входящих сообщений.

Для подтверждения приёма сообщения необходимо использовать метод AckRequest с указанием в качестве аргумента значение MesageId из полученного сообщения.

Для подтверждения сообщений, направленных по Видам сведений, использующие директивный протокол обмена, необходимо использовать MesageId из блока MessageMetadata, который был получен в ответе по методу Get после попытки извлечения сообщения из очереди.

Удаление запросов из очереди на подтверждение получения запроса может происходить в двух случаях: если система-ответчик прислала подтверждение получения запроса или истекло время ожидания подтверждения.

В случае если в составе сообщения передается вложение, загруженное на файловое хранилище, время возвращения сообщения в очередь входящих сообщений зависит от размера файла в зависимости от таблицы коэффициентов:

Диапазон размера вложений

Коэффициент увеличения базового времени передоставки

Менее 1 Мб

1

1 Мб…10 Мб

2

10 Мб…100 Мб

3

100 Мб…500 Мб

4

500 Мб…1 Гб

5

Более 1 Гб

10

1 коэффициент равен 15ти минутам (Пример: В случае? если направить сообщение с вложением весом 9 мб, срок передоставки сообщения составит 30 минут).

5.3.4. Использование очереди узла ИС  (NodeID)

Для ИС УВ использующих многосерверную (многоузловую) архитектуру для отправки сообщений-запросов в СМЭВ и использующих один и тот же сертификат ЭП-ОВ, предоставляется возможность получения сообщения по NodeID (узлу ИС). Функциональность доступна при обращении на следующие Единые адреса СМЭВ:

Для получения сообщения из очереди узла ИС необходимо зарегистрировать узел ИС (NodeID) в СМЭВ, направив запрос в Ситуационный центр.

В схеме запросов СМЭВ введен специальный элемент, в котором возможно указать имя узла ИС в параметре «NodeID» (//SendRequestRequest/SenderProvidedRequestData/NodeID). При получении сообщения-запроса с указанием NodeID СМЭВ 3.х маршрутизирует ответы на данный запрос в отдельную очередь входящих ответов на запросы.  Пример использования SendRequestRequest с указанным узлом информационной системы:

<ns:SendRequestRequest>

   <ns:SenderProvidedRequestData>

    <ns:MessageID>d039de7e-3dc0</ns:MessageID>

    <ns:ReferenceMessageID>d0acbf6c-1433</ns:ReferenceMessageID>

    <ns:TransactionCode>9ap3paUN/gLPzgC1u</ns:TransactionCode>

    <ns:NodeID>Test</ns:NodeID>

       <basic:MessagePrimaryContent>

          <ns1:DataRequest>

              <ns1:Request>Request</ns1:Request>

                   </ns1:DataRequest>

              </basic:MessagePrimaryContent>

    </ns:SenderProvidedRequestData>

    <ns:CallerInformationSystemSignature>

      <signature/>

    </ns:CallerInformationSystemSignature>

    </ns:SendRequestRequest>

где <ns:NodeID>Test</ns:NodeID> - узел информационной системы, в который будет направлен ответ на данный запрос.

Для получения ответа из очереди узла ИС необходимо использовать фильтрацию по NodeID. Чтобы использовать сценарий получения ответа из очереди узла ИС, необходимо при вызове метода GetResponse заполнить параметр MessageTypeSelector/NodeID. Пример:

<ns2:MessageTypeSelector xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.3" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.3" Id="SIGNED_BY_CALLER">

      <ns2:Timestamp>2021-05-25T18:46:49.000+03:00</ns2:Timestamp>

      <ns2:NodeID> Test </ns2:NodeID>

</ns2:MessageTypeSelector>

5.3.5.    Получение уведомления из очереди статусов

Статусные сообщения – это сообщения, содержащие информацию о статусе обработки сообщения в СМЭВ. Для статусных сообщений не предусмотрена отдельная очередь. Данные сообщения размещаются в базовой очереди ответов ИС, либо в специальной выделенной очереди ответов (мультиочереди), если такая очередь имеется для соответствующей версии протокола обмена. Основным механизмом доставки статусных сообщений об ошибках асинхронной обработки становятся системные ответы СМЭВ, получаемые методом GetResponse (см. п.5.2.6)

5.3.5.1. Структура сообщения с запросом статусного сообщения из очереди статусов

Структура сообщения, соответствующая передаче в СМЭВ запроса от ИС отправителя сообщения на получение статусного сообщения из очереди ответов, приведена на рисунке ниже (Рисунок 38).

Рисунок 38– Структура сообщения с запросом статусного сообщения, которое ИС отправителя сообщения передает в СМЭВ.

    СМЭВ-конверт с запросом сведений (//GetStatusRequest), направляемый ИС отправителя сообщения в СМЭВ для получения статусного сообщения из очереди ответов, включает следующие элементы:

  • блок даты и времени отправки сообщения (//Timestamp), который включает сведения о дате и времени отправки сообщения для получения статусного сообщения из очереди входящих ответов;
  • электронная подпись органа власти (ЭП-ОВ) (//CallerInformationSystemSignature).

При выполнении запроса по методу GetStatus дополнительное подтверждение сообщения по методу AckRequest не требуется.

5.3.5.2. Структура статусного сообщения из очереди статусов

Структура статусного сообщения, соответствующая передаче из очереди входящих ответов СМЭВ уведомления ИС отправителя сообщения, приведена на рисунке ниже (Рисунок 39).

Рисунок 39– Структура статусного сообщения, которое ИС отправителя сообщения получает из СМЭВ.

    СМЭВ-конверт со сведениями (//GetStatusResponse), получаемый ИС отправителя сообщения из СМЭВ, включающий уведомление из очереди входящих ответов, содержит следующие элементы:

  • блок данных СМЭВ-конверта //AsyncProcessingStatusData, содержащий в себе блок статуса сообщения //AsyncProcessingStatus и заполняемый СМЭВ;
  • электронная подпись СМЭВ (далее - ЭП-СМЭВ) (//SMEVSignature), заполняемый СМЭВ.

Блок //AsyncProcessingStatus содержит элементы:

  • идентификатор сообщения (//OriginalMessageId), сформированный отправителем сообщения;
  • категория статуса (//StatusCategory);
  • уведомление об описании статуса сообщения (//StatusDetails), содержащий описание статуса сообщения;
  • элемент типа //SmevFault, содержащий в себе элемент //Code, определяющий код ошибки (в случае SMEV-60) или модуля, на котором произошла ошибка, и элемент //Description, содержащий описание ошибки.

При выполнении запроса по методу GetStatus дополнительное подтверждение сообщения по методу AckRequest не требуется.

5.3.6.  Блокирование очередей и ИС при превышении квоты очереди ИС УВ

В случае превышения квоты на максимально допустимое количество сообщений в очереди входящих запросов, на стороне СМЭВ будет выполняться блокировка данной очереди входящих запросов ИС. После отправки сообщения-запроса система-инициатор запроса будет получать асинхронное статусное о том, что очередь, в которую должно быть направлено сообщение заблокирована, при этом сообщения-ответы в очередь входящих ответов ИС продолжат поступать.  Очередь будет разблокирована после уменьшения количества сообщений в очереди до значения меньшего, чем максимальное количество сообщений в очереди входящих запросов ИС.

В случае превышения квоты на максимально допустимое количество сообщений в очереди входящих ответов, для данной ИС УВ будет ограничена отправка сообщений-запросов. После отправки сообщения-запроса система-инициатора запроса будет получать синхронное статусное уведомление о том, что данной ИС УВ заблокирована отправка сообщений-запросов. При этом для других ИС УВ сохранится возможность отправки сообщений-ответов в очередь входящих ответов данной ИС. Возможность ИС УВ отправлять сообщения-запросы будет разблокирована после уменьшения количества сообщений в очереди входящих ответов до значения меньшего, чем максимальное количество сообщений в очереди входящих ответов ИС.

Блокировка очереди входящих запросов ИС также происходит в случае превышения максимального времени «простоя» ИС УВ, т.е когда ИС УВ продолжительное время не вычитывала сообщения из своей очереди входящих запросов ИС. Если последний опрос очереди входящих запросов ИС превысил значение больше, чем 24 часа, очередь входящих запросов ИС будет заблокирована, даже если квота данной очереди не превышена. Разблокировка очереди входящих запросов ИС происходит после уменьшения значения времени «простоя» ИС УВ с момента последнего опроса очереди входящих запросов ИС.

В случае, когда ИС УВ продолжительное время не вычитывала сообщения из своей очереди входящих ответов ИС, т.е последний опрос очереди входящих ответов ИС превысил значение больше, чем 24 часа, для данной ИС УВ будет ограничена отправка сообщений-запросов, даже если квота данной очереди не превышена. Возможность ИС УВ отправлять сообщения-запросы будет разблокирована после уменьшения значения времени «простоя» ИС УВ с момента последнего опроса очереди входящих ответов ИС.

Авторизуйтесь, чтобы оставить комментарий к статье