Регистрация событий в сигнальном топике Kafka

Содержание раздела
  1. Отключение регистрации событий
  2. Формат ключа сообщения
    1. Параметры ключа сообщения
    2. Примеры ключей сообщения
  3. Формат тела сообщения
    1. Параметры тела сообщения
    2. Примеры тела сообщения

Система поддерживает регистрацию событий в сигнальном топике Kafka.

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

Рекомендуется настроить автоматическую очистку сигнального топика в конфигурации брокера Kafka.

Отключение регистрации событий

Можно отключить регистрацию следующих событий:

  • завершение и отмена операций записи (управляется параметром KAFKA_STATUS_EVENT_WRITE_OPERATIONS_ENABLED);
  • создание и удаление внешних таблиц (управляется параметром KAFKA_STATUS_EVENT_EXTERNAL_DDL_ENABLED).

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

Ключ сообщения в сигнальном топике Kafka имеет формат, показанный ниже. Описание параметров ключа сообщения см. в секции ниже.

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

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

logical_db

Имя логической базы данных, в которой произошло событие.

event_timestamp

Дата и время события в формате YYYY-MM-DD hh:mm:ss[.microseconds]. Подробнее о формате см. в разделе Строковый формат даты и времени в ответах.

event_code

Код события. Возможные значения:

  • DATAMART_SCHEMA_CHANGED — выполнение DDL-запроса (независимо от того, изменил запрос логическую схему данных или нет);
  • DELTA_OPEN — открытие дельты;
  • DELTA_CLOSE — закрытие дельты;
  • DELTA_CANCEL — откат дельты;
  • WRITE_OK — завершение операции записи;
  • WRITE_CANCEL — отмена операции записи.
event_UUID

Уникальный идентификатор события.

Примеры ключей сообщения

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

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

Пример ключа в сообщении о завершении операции записи:

{
  "datamart": "marketing", 
  "datetime": "2024-02-28 09:15:43.532",
  "event": "WRITE_OK",
  "eventLogId": "8b8dfa17-6605-4874-8ebf-1b8b47c201f3"
}

Пример ключа в сообщении об отмене операции записи:

{
  "datamart": "marketing", 
  "datetime": "2024-02-28 09:51:11.148",
  "event": "WRITE_CANCEL",
  "eventLogId": "3d963cbc-8782-498e-923d-602d7ccf7c2d"
}

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

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

Событие Формат тела сообщения
Выполнение DDL-запроса {"datamart": "<logical_db>", "entityName": "<entity_name>", "entityDefinition": "<entity_definition>", changeDateTime": "<ddl_timestamp>"}
Открытие дельты {"deltaNum": <delta_number>}
Закрытие дельты {"deltaNum": <delta_number>, "deltaDate": "<delta_commit_timestamp>"}
Откат дельты {"deltaNum": <delta_number>}
Завершение операции записи {"entity": "<entity_name>", "cn": <sys_cn>, "ts": <ts_unix_time>, "rowsAffected": <rows_affected_quantity>}
Отмена операции записи {"entity": "<entity_name>", "cn": <sys_cn>}

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

logical_db

Имя логической базы данных, в которой выполнен DDL-запрос.

entity_name

Имя логической сущности, к которой относится DDL-запрос или операция записи.

entity_definition

Определение логической сущности. Возможные значения:

ddl_timestamp

Дата и время выполнения DDL-запроса в формате YYYY-MM-DD hh:mm:ss[.microseconds]. Подробнее о формате см. в разделе Строковый формат даты и времени в ответах.

delta_number

Номер дельты.

delta_commit_timestamp

Дата и время закрытия дельты в формате YYYY-MM-DD hh:mm:ss[.microseconds]. Подробнее о формате см. в разделе Строковый формат даты и времени в ответах.

sys_cn

Номер операции записи. Для прокси-таблиц и standalone-таблиц указывается значение null.

ts_unix_time

Дата и время выполнения или отмены операции записи в Unix-формате, равное целому числу микросекунд с 00:00:00 UTC 1 января 1970 года. Для прокси-таблиц и standalone-таблиц указывается значение null.

rows_affected_quantity

Количество добавленных, измененных и удаленных операцией строк.

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

Пример тела сообщения с информацией о выполнении DDL-запроса:

{
  "changeDateTime": "2024-04-24 15:25:47.002",
  "datamart": "marketing"
}

Пример тела сообщения с информацией о закрытии дельты:

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