CREATE TOPIC
С помощью оператора CREATE TOPIC можно создать топик, а также читателей для него.
Общий вид команды:
CREATE TOPIC topic_path (
CONSUMER consumer_name [WITH (consumer_option = value[, ...])]
) WITH (topic_option = value[, ...]);
consumer_option— параметр читателя;topic_option— параметр топика.
Все параметры команды, кроме topic_path не обязательны. По умолчанию топик создается без читателей. Все
не указанные явно параметры также выставляются по умолчанию (и для топика, и для читателя).
Параметры читателя:
type— тип читателя. Возможные значения:STREAMINGиSHARED. Значение по умолчаниюSTREAMING.important— признак важного читателя. Данные из топика не будут удалены, пока их не обработают все важные читатели. Тип значения —boolean, значение по умолчанию —false.availability_period— определяет время доступности сообщений для читателя. Опция позволяет продлить время хранения сообщений в топике сверх retention_period, вплоть доavailability_period, если читатель не подтверждает их обработку. Тип значения —Interval. Несовместим с параметромimportant. Значение по умолчанию отсутствует.read_from— определяет момент записи сообщений, начиная с которого читатель будет получать данные. Сообщения, записанные ранее этого момента, читатель не получит. Тип значения —Datetime,Timestampилиinteger(Unix timestamp в виде числа). Значение по умолчанию —0(чтение с самого раннего доступного в топике момента времени).
Параметры читателя, доступные только для разделяемого (общего) читателя:
keep_messages_order— сохраняет порядок чтения сообщений. Если значение равноtrue, гарантируется порядок обработки сообщений в рамках одной группы сообщений. Значение по умолчаниюfalse.default_processing_timeout— время обработки сообщения. Если за это время обработка сообщения не будет подтверждена и время обработки не будет продлено, сообщение вернется в очередь и будет передано на повторную обработку. Значение по умолчаниюInterval('PT30S').max_processing_attempts— максимальное количество попыток обработки одного сообщения (тип значения —integer). Опция поддерживается только приdead_letter_policy = moveилиdead_letter_policy = delete. Значение по умолчанию —1000.dead_letter_policy— действие, которое нужно выполнить с сообщением, если все попытки его обработки завершились неудачей (тип значения —String). Возможные значения:delete,move,none. Значение по умолчанию —none.dead_letter_queue— имя топика DLQ (тип значения —String). Обязателен приdead_letter_policy = moveи не поддерживается приdead_letter_policy = none/delete.
Параметры топика
metering_mode— способ метеринга ресурсов (RESERVED_CAPACITY- по выделенным ресурсам илиREQUEST_UNITS- по фактическому использованию). Актуально для топиков в serverless базах данных. Тип значения -String.min_active_partitions— минимальное количество активных партиций топика. Автопартиционирование не будет уменьшать количество активных партиций ниже этого количества. Тип значения —integer, значение по умолчанию —1.max_active_partitions— максимальное количество активных партиций топика. Автопартиционирование не будет увеличивать количество активных партиций выше этого количества. Тип значения —integer, по умолчанию равноmin_active_partitions.retention_period— время хранения данных в топике. Тип значения —Interval, значение по умолчанию —18h.retention_storage_mb— ограничение на максимальное место на диске, занимаемое данными топика. При превышении этого значения старые данные будут удаляться, как по retention. При включенном автоматическом партиционировании потребляемое место может превышать установленное значение. Тип значения —integer, значение по умолчанию —0(не ограничено).partition_write_burst_bytes— размер запаса квоты на запись в партицию на случай всплесков записи. При выставлении в0фактическое значение write_burst принимается равным значению квоты (что позволяет всплески записи длительностью до 1 секунды). Тип значения —integer, значение по умолчанию:0.partition_write_speed_bytes_per_second— максимальная разрешенная скорость записи в 1 партицию. Если поток записи в партицию превысит это значение, запись будет квотироваться. Тип значения —integer, значение по умолчанию —2097152(2 МБ).auto_partitioning_strategy— режим автопартиционирования.
Допустимые значения:disabled,paused,scale_up, значение по умолчанию —disabled.auto_partitioning_up_utilization_percent— определяет порог загрузки партиции в процентах от максимальной скорости записи, при достижении которого будет инициировано автоматическое увеличение числа партиций. Тип значения —integer, значение по умолчанию —80.auto_partitioning_stabilization_window— определяет временной интервал, в течение которого уровень нагрузки должен оставаться выше установленного порога (auto_partitioning_up_utilization_percent), прежде чем будет выполнено автоматическое увеличение количества партиций. Тип значения —Interval, значение по умолчанию —5m.
Примечание
При выборе имени для топика учитывайте общие правила именования схемных объектов.
Следующая команда создаст топик без читателей с настройками по умолчанию:
CREATE TOPIC `my_topic`;
Чтобы создать топик с важным читателем и временем хранения данных 1 сутки, выполните команду:
CREATE TOPIC `my_topic` (
CONSUMER my_consumer WITH (important = true)
) WITH (
retention_period = Interval('P1D')
);
Чтобы создать топик с временем хранения данных 1 сутки и двумя читателями, для одного из которых данные могут по необходимости храниться до 2-х суток, выполните команду:
CREATE TOPIC `my_topic` (
CONSUMER my_consumer1,
CONSUMER my_consumer2 WITH (availability_period = Interval('P2D'))
) WITH (
retention_period = Interval('P1D')
);
Чтобы создать топик с разделяемым (общим) читателем, выполните команду:
CREATE TOPIC `my_topic` (
CONSUMER my_consumer WITH (
type = 'shared',
keep_messages_order = false,
default_processing_timeout = Interval('PT30S'),
max_processing_attempts = 3,
dead_letter_policy = 'move',
dead_letter_queue = 'my_dlq_topic'
)
);