ALTER TOPIC

С помощью оператора ALTER TOPIC можно изменить настройки топика, а также добавить, изменить или удалить читателя.

Общий вид команды:

ALTER TOPIC topic_path action1, action2, ..., actionN;
  • action — действие по изменению. Возможные действия описаны ниже.

Работа с топиком

Задать параметры топика

SET (option = value[, ...]) — действие задает параметры топика.

Общий вид команды:

ALTER TOPIC topic_path SET (option = value[, ...]);
  • option и value — параметр топика и его значение.

Параметры топика:

  • metering_mode — способ метеринга ресурсов (RESERVED_CAPACITY - по выделенным ресурсам или REQUEST_UNITS - по фактическому использованию). Актуально для топиков в serverless базах данных. Тип значения - String.
  • min_active_partitions — минимальное количество активных партиций топика. Автоматическая балансировка нагрузки не будет уменьшать количество активных партиций ниже этого количества. Тип значения — integer, значение по умолчанию — 1.
  • retention_period — время хранения данных в топике. Тип значения — Interval, значение по умолчанию — 18h.
  • retention_storage_mb — ограничение на максимальное место на диске, занимаемое данными топика. При превышении этого значения старые данные будут удаляться, как по retention. Тип значения — integer, значение по умолчанию — 0 (не ограничено).
  • partition_count_limit — максимальное количество активных партиций топика. Тип значения — integer, значение по умолчанию: 0 (не ограничено).
  • partition_write_burst_bytes — размер запаса квоты на запись в партицию на случай всплесков записи. При выставлении в 0 фактическое значение write_burst принимается равным значению квоты (что позволяет всплески записи длительностью до 1 секунды). Тип значения — integer, значение по умолчанию: 0.
  • partition_write_speed_bytes_per_second — максимальная разрешенная скорость записи в 1 партицию. Если поток записи в партицию превысит это значение, запись будет квотироваться. Тип значения — integer, значение по умолчанию — 2097152 (2 МБ).

Следующая команда изменит время хранения данных в топике и квоту на скорость записи в 1 партицию:

ALTER TOPIC `my_topic` SET (
    retention_period = Interval('PT36H'),
    partition_write_speed_bytes_per_second = 3000000
);

Работа с читателем

Добавить читателя

ADD CONSUMER — действие добавляет читателей для топика.

Общий вид команды:

ALTER TOPIC topic_path ADD CONSUMER consumer_name [WITH (option = value[, ...])];
  • option и value — параметр читателя и его значение.

Параметры читателя:

  • important— определяет важного читателя. Никакие данные из топика не будут удалены, пока все важные читатели их не прочитали. Тип значения — boolean, значение по умолчанию: false.
  • read_from— определяет момент времени записи сообщений, начиная с которого читатель будет получать данные. Данные, записанные ранее этого момента, прочитаны не будут. Тип значения: Datetime ИЛИ Timestamp или integer (unix-timestamp в виде числа). Значение по умолчанию — now

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

ALTER TOPIC `my_topic` ADD CONSUMER my_consumer;

Следующая команда добавит к топику важного читателя:

ALTER TOPIC `my_topic` ADD CONSUMER my_consumer2 WITH (important = true);

Задать параметры читателя

ALTER CONSUMER consumer_name SET (option = value[, ...]) — действие задает параметры читателя топика.

Общий вид команды:

ALTER TOPIC topic_path ALTER CONSUMER consumer_name SET (option = value[, ...]);
  • option и value — параметр читателя и его значение.

Следующая команда сделает читателя важным:

ALTER TOPIC `my_topic` ALTER CONSUMER my_consumer SET (important = true);

В одной команде может быть указано несколько ALTER CONSUMER действий, настройки в них не должны повторяться:

ALTER TOPIC `my_topic`
    ALTER CONSUMER my_consumer SET (important = true)
    ALTER CONSUMER my_consumer SET (read_from = 0);

Удалить читателя

DROP CONSUMER — действие удаляет читателя топика.

Общий вид команды:

ALTER TOPIC topic_path DROP CONSUMER consumer_name;

Следующая команда удалит читателя с именем old_consumer:

ALTER TOPIC `my_topic` DROP CONSUMER old_consumer;
Предыдущая
Следующая