14. Спецификация модуля «BLOB-адаптер»
14.1. blob.rq
blob.rq - Топик запросов на получение бинарных данных по полученной ранее ссылке.
Структура сообщения
datamartBlobRequestMessage:
description: Запрос бинарных данных по ссылке
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
REQUEST_ID:
description: Идентификатор запроса
type: string
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartBlobRequest:0.1
payload:
$ref: '#/components/schemas/datamartBlobRequest'
examples:
- name: getBlobDataRequest
summary: Запрос бинарных данных по ссылке
headers:
REQUEST_ID: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
AGENT_CONSUMER_ID: agent-fias
MESSAGE_TYPE: DatamartBlobRequest:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
queryRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
reference:
subRequestId: 4cbb11d6-47de-4928-953f-47dfa6c6b310
path: reference
Avro-схема сообщения
datamartBlobRequest:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: BlobRequest
namespace: datamart.blob
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: queryRequestId
description: Идентификатор исходного запроса, в рамках которого была получена ссылка
type:
type: string
logicalType: uuid
- name: reference
description: Ссылка на данные
type:
type: record
name: BinaryReference
namespace: query.result
fields:
- name: subRequestId
description: Идентификатор подзапроса
type:
type: string
logicalType: uuid
- name: path
description: Ссылка
type: string
14.2. blob.rs
blob.rs - Топик с бинарными данным блобов
Структура сообщения
datamartBlobChunkMessage:
description: Чанки бинарных данных
contentType: 'application/octet-stream'
bindings:
kafka:
key:
$ref: '#/components/schemas/datamartBlobChunkInfo'
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartBlobChunkInfo:0.1
payload:
description: Бинарные данные
examples:
- name: base64
headers:
MESSAGE_TYPE: DatamartBlobChunkInfo:0.1
payload:
value: JEEJNodyLO7p1pgsRHG9pEiXeYGvHW4YCl4FgrgBmu5C92iVX1PV2GZdcqsb66bx8sk=
Avro-схема сообщения
datamartBlobChunkInfo:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: BlobChunk
namespace: datamart.blob
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: queryRequestId
description: Идентификатор исходного запроса, в рамках которого была получена ссылка
type:
type: string
logicalType: uuid
- name: chunkNum
description: Номер чанка
type: int
minimum: 1
- name: isLast
description: Признак последнего чанка
type: boolean
examples:
- requestId: 3546e40b-47fe-41b6-9c06-a2e915eb4181
queryRequestId: a8e9f47b-38cd-4db6-a245-0fbd6e78c195
chunkNum: 1
isLast: true
14.3. blob.err
blob.err - Топик c ошибками получения бинарных данных по ссылке.
Структура сообщения
datamartBlobErrorResponseMessage:
description: Ошибка получения бинарных данных по ссылке
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
bindings:
kafka:
key:
type: string
format: uuid
description: Уникальный идентификатор подзапроса
headers:
type: object
properties:
AGENT_CONSUMER_ID:
description: Идентификатор агента потребителя
type: string
MESSAGE_TYPE:
description: Тип сообщения
type: string
const: DatamartBlobErrorResponse:0.1
payload:
$ref: '#/components/schemas/datamartBlobErrorResponse'
examples:
- name: blobError
summary: Пример ошибки получения бинарных данных по ссылке
headers:
AGENT_CONSUMER_ID: agent-fias
MESSAGE_TYPE: DatamartBlobErrorResponse:0.1
payload:
requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
queryRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
errorCode: DATAMART-001
errorMessage: Непредвиденная ошибка обработки
Avro-схема сообщения
datamartBlobErrorResponse:
schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
type: record
name: BlobError
namespace: datamart.blob
fields:
- name: requestId
description: Уникальный идентификатор запроса
type:
type: string
logicalType: uuid
- name: queryRequestId
description: Идентификатор исходного запроса, в рамках которого была получена ссылка
type:
type: string
logicalType: uuid
- name: errorCode
description: Код ошибки
type: string
- name: errorMessage
description: Сообщение с ошибкой
type: string