Добавление читателя топика

С помощью команды topic consumer add вы можете добавить читателя для созданного ранее топика.

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

ydb [global options...] topic consumer add [options...] <topic-path>

Посмотрите описание команды добавления читателя:

ydb topic consumer add --help

Параметры подкоманды

Имя Описание
--consumer VAL Имя читателя, которого нужно добавить.
--starting-message-timestamp VAL Время в формате UNIX timestamp (секунды с 1970.01.01) или в формате ISO-8601 (например, 2020-07-10T15:00:00Z). Чтение начнется с первого сообщения, полученного после указанного времени. Если время не задано, то чтение начнется с самого старого сообщения в топике.
--supported-codecs Поддерживаемые методы сжатия данных.
Значение по умолчанию — raw.
Возможные значения:
  • RAW — без сжатия;
  • ZSTD — сжатие zstd;
  • GZIP — сжатие gzip;
  • LZOP — сжатие lzop.
--important Указывает, является ли читатель важным.
Значение по умолчанию — false.
Для важных читателей:
  • не применяется ограничение по периоду доступности (--availability-period);
  • данные в топике не удаляются, пока они не обработаны всеми важными читателями;
  • это влияет на процесс очистки данных в топике.
Используйте этот параметр для критически важных читателей, которые должны гарантированно прочитать и обработать все сообщения.
--availability-period VAL Время доступности данных в топике для необработанных сообщений.
Опция позволяет продлить время хранения сообщений в топике с времени хранения retention-period вплоть до указанного времени доступности, если читатель не подтверждает их обработку.
Формат: положительное число с указанием единицы измерения времени (без пробелов).
Поддерживаются следующие единицы измерения:
  • s — секунды (например, 30s, 120s);
  • m — минуты (например, 5m, 1440m);
  • h — часы (например, 1h, 72h);
  • d — дни (например, 1d, 7d).
Примеры: 72h, 1440m, 2d, 3600s.
Для важных читателей (с параметром --important) этот параметр не применяется.

Примеры

Примечание

В примерах используется профиль quickstart, подробнее смотрите в Создание профиля для соединения с тестовой БД.

Создайте читателя с именем my-consumer для созданного ранее топика my-topic, чтение начнется с первого сообщения, полученного после 15 августа 2022 13:00:00 GMT

ydb -p quickstart topic consumer add \
  --consumer my-consumer \
  --starting-message-timestamp 1660568400 \
  my-topic

Убедитесь, что читатель создан:

ydb -p quickstart scheme describe my-topic

Результат:

RetentionPeriod: 2 hours
PartitionsCount: 2
SupportedCodecs: RAW, GZIP

Consumers:
┌──────────────┬─────────────────┬───────────────────────────────┬───────────┐
| ConsumerName | SupportedCodecs | ReadFrom                      | Important |
├──────────────┼─────────────────┼───────────────────────────────┼───────────┤
| my-consumer  | RAW, GZIP       | Mon, 15 Aug 2022 16:00:00 MSK | 0         |
└──────────────┴─────────────────┴───────────────────────────────┴───────────┘

Создайте читателя с именем backup-consumer для топика my-topic с периодом доступности данных 3 дня

ydb -p quickstart topic consumer add \
  --consumer backup-consumer \
  --availability-period 3d \
  my-topic

Если читатель успевает обрабатывать данные, то сообщения в топике будут храниться в течение 2-х часов, в соответствии со значением параметра retention-period топика.
Однако при временной остановке чтения, время хранения данных в топике, для которых читатель backup-consumer ещё не подтвердил обработку, будет увеличено вплоть до 3-х дней, в соответствии с параметром availability-period.

Создайте важного читателя с именем critical-consumer для топика my-topic с дополнительной поддержкой кодека ZSTD

ydb -p quickstart topic consumer add \
  --consumer critical-consumer \
  --important \
  --supported-codecs raw,gzip,zstd \
  my-topic

Обратите внимание, что для важного читателя параметр --availability-period не применяется, даже если он указан.