TQE Documentation portal logo
Помощь
Обновлена 9 ноября 2026 г. в 13:01

Работа с сообщениями

Система гарантирует строгий порядок сообщений в пределах одного шарда: сообщения с одинаковым ключом шардирования (sharding_key) обрабатываются строго друг за другом.

Публикация. На каждое опубликованное сообщение система возвращает уникальный идентификатор. Чтобы экономить сетевые ресурсы, можно отправлять сообщения пакетами. В этом случае для всего пакета указывается единый sharding_key, а запись в шард происходит транзакционно. Однако если хотя бы одно сообщение из пакета не проходит валидацию, то весь пакет не записывается. Система вернет ошибку с указанием идентификатора первого проблемного сообщения. В случае успеха вы получите список идентификаторов всех сообщений в том же порядке, в каком они отправлялись в запросе.

Чтение. Читать сообщения можно только в пределах одного шарда. Доступны три режима навигации:

  • с самого первого сообщения.
  • с указанного курсора.
  • с последнего сообщения в очереди.

В ответе на запрос содержится поле cursor. Его можно использовать, чтобы возобновить чтение с последнего прочитанного сообщения, например для восстановления подписки.

Если задать время ожидания polling_timeout (в миллисекундах), очередь будет ждать появления новых сообщений и ответит сразу, как только они появятся. Это избавляет от пустых опросов, когда сообщений временно нет.

Фильтрация и консистентность. При чтении можно указать routing_key, и очередь вернет только сообщения с этим ключом. Также поддерживается фильтрация по нескольким ключам sharding_key. Если реплика отстала от лидера и получила запрос на чтение с курсора, которого у неё еще нет, она задержит ответ до момента получения актуальных данных (в пределах указанного времени ожидания) — так обеспечивается консистентное чтение.

Подписка на сообщения (например, через gRPC) реализуется на уровне коннектора, а не самой очереди.

Была ли статья полезна?