envelopes
Конверт и сообщения
Данный раздел содержит описание специального конверта сообщений, необходимого для обмена с системой оператора ЭПД.
Основной обмен конвертами происходит через корпоративную систему обмена сообщениями Apache Kafka.
Основные очереди обмена сообщениями:
- prod - продовая корпоративная Apache Kafka
- прием:
epd.events.input.v1.epd.hub - отправка:
epd.events.input.v1.hub.epd
- прием:
- demo - тестовая корпоративная Apache Kafka
- прием:
epd.events.input.demo.v1.epd.hub - отправка:
epd.events.input.demo.v1.hub.epd
- прием:
- dev-1 - тестовая корпоративная Apache Kafka
- прием:
epd.events.input.dev.v1.epd.hub - отправка:
epd.events.input.dev.v1.hub.epd
- прием:
Общее описание
Конверт
Конверт сообщений - это специальный стандартизированный JSON объект. Для работы с API шины необходимо использовать сообщения, завернутые в подобные конверты. Большая часть информации является необязательной и потому будут описаны только необходимые поля.
| Название поля | Описание |
|---|---|
| messageId | Уникальный идентификатор сообщения (необходимо генерировать при каждой отправке) |
| messageType | Тип сообщения. Именно этот параметр отвечает за то, как будет обрабатываться это сообщение. |
| message | Тело сообщения, иными словами - данные. |
| sentTime | Дата отправки сообщения. Данный параметр по сути ни на что не влияет, а нужен для определения возраста сообщения. |
Сообщение
Сообщение состоит из двух частей: тип и тело.
- Тип указывается в messageType поле конверта, он же является названием сообщения,
- Тело сообщения - это непосредственно данные сообщения для выполнения действий или с конкретной информацией о сущности, которые записываются в message.
Примеры сообщений в конверте
Исходящее сообщение
Данный вариант конверта будет использоваться для отправки команд потребителю АПИ шины.
Пример конверта для исходящего сообщения sendDocumentCommandEvent.
{
"messageId": "ed290000-5d01-0015-6490-08d9d6d7cd93",
"messageType": "sendDocumentCommandEvent",
"message": {
"docflowId": "22877C86-73A4-4D97-BBCF-C63A44153C8D",
"docflowType": "ETRN",
"senderId": "2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723",
"receiversId": [{
"id": "2AECD6B395E-4FCB-41AA-B10B-4E634B773772",
"receiverType": "Carrier"
},
{
"id": "2AE3DF9A700-7E0D-4B9A-A531-E1C29E1F5BC0",
"receiverType": "Consignee"
}
],
"documentId": "c0478105-cd56-49e9-bb27-5786d228697d",
"documentStorageId": "ed290100-5d01-0015-6490-08d9d6d7cd95",
"documentName": "ON_TRNACLGROT_2AECD6B395E-4FCB-41AA-B10B-4E634B773772_2AE3DF9A700-7E0D-4B9A-A531-E1C29E1F5BC0_2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723_0_20220526_c0478105-cd56-49e9-bb27-5786d228697d.xml",
"documentType": "ShipperInfo",
"signatures": [{
"id": "2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723",
"storageID": "ed290200-5d01-0015-6490-08d9d6d7cd95",
"fileName": "ON_TRNACLGROT_2AECD6B395E-4FCB-41AA-B10B-4E634B773772_2AE3DF9A700-7E0D-4B9A-A531-E1C29E1F5BC0_2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723_0_20220526_c0478105-cd56-49e9-bb27-5786d228697d.p7s"
}],
"primaryDocumentId": "c0478105-cd56-49e9-bb27-5786d228697d"
},
"sentTime": "2022-05-21T18:25:43+03:00"
}
Входящее сообщение
Данный вариант конверта, как правило, будет приходить в ответных сообщениях.
Пример конверта для входящего сообщения documentCameOutboundEvent.
{
"messageId": "ed290000-5d01-0015-6490-08d9d6d7cd94",
"messageType": "documentCameOutboundEvent",
"message": {
"docflowId": "22877C86-73A4-4D97-BBCF-C63A44153C8D",
"docflowType": "ETRN",
"senderId": "2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723",
"receiverId": "2AE3DF9A700-7E0D-4B9A-A531-E1C29E1F5BC0",
"documentId": "c0478105-cd56-49e9-bb27-5786d228697d",
"documentStorageId": "ed290100-5d01-0015-6490-08d9d6d7cd95",
"documentName": "ON_TRNACLGROT_2AECD6B395E-4FCB-41AA-B10B-4E634B773772_2AE3DF9A700-7E0D-4B9A-A531-E1C29E1F5BC0_2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723_0_20220520_c0478105-cd56-49e9-bb27-5786d228697d.xml",
"documentType": "ShipperInfo",
"signatures": [{
"id": "2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723",
"storageID": "ed290200-5d01-0015-6490-08d9d6d7cd95",
"fileName": "ON_TRNACLGROT_2AECD6B395E-4FCB-41AA-B10B-4E634B773772_2AE3DF9A700-7E0D-4B9A-A531-E1C29E1F5BC0_2AE4E671C65-3DAB-4974-9FF9-3AEAF80AD723_0_20220520_c0478105-cd56-49e9-bb27-5786d228697d.p7s"
}],
"primaryDocumentId": "c0478105-cd56-49e9-bb27-5786d228697d"
},
"sentTime": "2022-05-21T18:35:43+03:00"
}
Входящее сообщение об ошибке
Данный вариант конверта, как правило, будет приходить в ответных сообщениях, в случае если конверт с ошибкой, например:
- Неизвестный тип сообщения указанный в messageType
{
"messageId": "ed290000-5d01-0015-6490-08d9d6d7cd94",
"messageType": "error",
"message": {"Неизвестный тип сообщения в messageType"},
"sentTime": "2022-05-21T18:35:43+03:00"
}
- Структура указанная в message не соответствует типу сообщения
{
"messageId": "ed290000-5d01-0015-6490-08d9d6d7cd94",
"messageType": "error",
"message": {"Структура указанная в message не соответствует типу сообщения"},
"sentTime": "2022-05-21T18:35:43+03:00"
}
Примечание: Сообщения об ошибке, будет отправляться на тот же messageId, который был указан в исходящем конверте.