Сообщения об изменённых объектах выкладываются в очередь SemanticMDM.<ИдентификаторСистемы>+ ключ маршрутизации по приоритету при наличии
| Наименование | Значение | Пояснение |
|---|---|---|
| app_id | SemanticMDM | Константа |
| message_id | Целое число | Идентификатор исходящего сообщения |
| reply_to | Строка | Наименование очереди, в которую следует отправлять сообщения об обработке |
| priority | Целое число от 1 до 10 | Приоритет сообщения, внутренний параметр MQ |
| delivery_mode | Целое число | Режим обработки, внутренний параметр MQ |
| content_encoding | UTF-8 | Кодировка тела сообщения, константа |
| content_type | application/json | Тип содержимого тела сообщения, константа |
| Тело сообщения | Строка в кодировке UTF-8 | Строка является сериализованным в Json ExportRootObject |
Вызов функций RPC осуществляется через очередь SemanticMDM.RPC. Трансферы параметров вызова функции должны быть унаследованы от базового класса RpcFunction, чтобы при сериализации их в Json возникло указание на фактический тип данных в атрибуте @type.
@XmlSeeAlso({RpcGetFile.class, RpcPing.class})
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = RpcGetFile.class),
@JsonSubTypes.Type(value = RpcPing.class),
})
public abstract class RpcFunction {
}
public class RpcPing extends RpcFunction {
public String systemId;
}
Сообщить SemanticMDM, что система с идентификатором systemId жива и готова к приёму сообщений. Рекомендуется вызывать функцию один раз в минуту. Возвращаемый результат отсутствует. Пример Json:
{
"@type": "RpcPing",
"systemId": "1C"
}
public class RpcGetFile extends RpcFunction {
public String fileHash;
}
Получить тело файла с известным хэшем. Возвращаемый результат – массив байт. Пример Json:
{
"@type": "RpcGetFile",
"fileHash": "123456789"
}
После обработки входящего сообщения, успешной или неуспешной, клиент обязан уведомить SemanticMDM о данном факте. Уведомление должно быть выслано в топик, указанный в заголовке reply_to принятого сообщения со следующими атрибутами:
| Наименование | Значение | Пояснение |
|---|---|---|
| app_id | Строка | Идентификатор системы |
| message_id | Целое число | Идентификатор обработанного сообщения |
| priority | Целое число от 1 до 10 | Приоритет сообщения, на усмотрение клиента |
| delivery_mode | Целое число | Режим обработки, на усмотрение клиента |
| content_encoding | UTF-8 | Кодировка тела сообщения, на усмотрение клиента |
| content_type | application/json | Тип содержимого тела сообщения, константа |
| Тело сообщения | Строка в кодировке UTF-8 | Строка должна быть сериализованным в Json ExportedObjectReply |
class ExportedObjectReply {
String sourceId; // Идентификатор созданного объекта, если был создан, в терминах клиента
Set<String> deletedSourceIds; // Идентификаторы удалённых объектов в терминах клиента
String info; // Информация о процессе обработки для журналирования
boolean encounteredError; // Возникла ли ошибка во время обработки
String mdmId; // Идентификатор обработанного объекта SemanticMDM как он был указан во входящем сообщении
}
Пример Json:
{
"sourceId": "some-key-value",
"deletedSourceIds": [
"deleted-key-1",
"deleted-key-2"
],
"info": "successfully parsed",
"encounteredError": false,
"mdmId": "some-item-uuid"
}