Link Search Menu Expand Document

Формат сообщений в системном топике Kafka

Содержание раздела
  1. Формат ключа сообщения
  2. Формат тела сообщения

Система записывает в топик Kafka сообщения по следующим событиям:

Сообщения записываются в JSON-формате в топик, имя которого задано с помощью параметра конфигурации KAFKA_STATUS_EVENT_TOPIC. Каждое сообщение состоит из ключа и тела, их форматы описаны ниже.

Формат ключа сообщения

Ключ сообщения в системном топике Kafka имеет следующий формат:

{
  "datamart": "<logical_db>",
  "datetime": "<event_datetime>",
  "event": "<event_code>",
  "eventLogId": "<event_UUID>"
}

Где:

  • logical_db — имя логической базы данных, в которой произошло событие;
  • event_datetime — дата и время события;
  • event_code — код события. Возможные значения:
    • DATAMART_SCHEMA_CHANGED — изменение логической схемы,
    • DELTA_OPEN — открытие дельты,
    • DELTA_CLOSE — закрытие дельты,
    • DELTA_CANCEL — откат дельты;
  • event_UUID — уникальный идентификатор события.

Пример ключа в сообщении о закрытии дельты:

{
  "datamart": "marketing", 
  "datetime": "2022-02-28 08:02:40",
  "event": "DELTA_CLOSE",
  "eventLogId": "6b80c392-3198-492f-a631-6a684e521b79"
}

Формат тела сообщения

Тело сообщения в системном топике Kafka содержит параметры события и имеет формат, описанный в таблице ниже.

Событие Формат тела сообщения
Изменение логической схемы {"changeDateTime": "<change_datetime>", "datamart": "<logical_db>"}
Открытие дельты {"deltaNum": <delta_number>}
Закрытие дельты {"deltaNum": <delta_number>, "deltaDate": "<delta_commit_datetime>"}
Откат дельты {"deltaNum": <delta_number>}

Где:

  • change_datetime — дата и время изменения в формате YYYY-MM-DD hh:mm:ss;
  • logical_db — имя логической базы данных, к которой относится изменение;
  • delta_number — номер дельты;
  • delta_commit_datetime — дата и время закрытия дельты в формате YYYY-MM-DD hh:mm:ss.

Пример тела в сообщении об изменении логической схемы:

{
  "changeDateTime": "2022-02-24 15:25:47",
  "datamart": "marketing"
}

Пример тела в сообщении о закрытии дельты:

{
  "deltaNum": 8,
  "deltaDate": "2022-02-28 08:02:40"
}