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

Руководство разработчика

Настоящее Руководство предназначено для разработчиков приложений, инженеров и других специалистов, взаимодействующих с TQE(MQ) для получения, обработки и отправки сообщений.

В Руководстве описаны функции API TQE(MQ).

API

В разделе описана спецификация API на основе протокола gRPC.

При включенной аутентификации каждый вызов требует действительных учетных данных (базовая аутентификация по TLS). При их отсутствии возвращается ошибка Unauthenticated, при отсутствии привилегии на метод или очередь — PermissionDenied, при отсутствии связи с хранилищем авторизационных данных Unavailable. Подробнее см. раздел Аутентификация и авторизация.

Примеры создания gRPC-клиента и выполнения запросов к очереди приведены в документах:

Producer

Сервер публикации сообщений брокера очередей.

Method Name
Request Type
Response Type
Description
Produce
Публикация группы сообщений в очередь

ProduceRequest

Запрос на публикацию группы сообщений в очередь.

Field
Type
Label
Description
queue
string
Название очереди, в которую необходимо опубликовать сообщения
sharding_key
string
optional
Ключ шардирования. Используется для распределения данных в системе. При включенном режиме статического шардирования должен находиться в диапазоне идентификаторов бакетов карты распределения.
messages
repeated
Набор сообщений
metadata
repeated
Произвольные данные в формате списка из пар ключ-значение

ProduceMessage

Группа сообщений.

Field
Type
Label
Description
routing_key
string
optional
Ключ маршрутизации сообщения (тип сообщения). Используется для фильтрации сообщений из очереди на потребителях
deduplication_key
string
optional
Ключ дедупликации. Используется для проверки повторных сообщений. Если не указан, проверка не выполняется.
payload
bytes
Произвольные данные в бинарном формате (тело сообщения)
metadata
repeated
Произвольные данные в формате списка из пар ключ-значение

ProduceResponse

Ответ на публикацию группы сообщений.

Field
Type
Label
Description
ids
uint64
repeated
Идентификаторы сообщений
is_duplicates
boolean
repeated
Флаги наличия дубликатов

BroadcastRequest

Запрос на рассылку сообщения на указанные шарды.

Field
Type
Label
Description
queue
string
Название очереди, в которую необходимо опубликовать сообщение
routing_key
string
optional
Ключ маршрутизации сообщения (тип сообщения). Используется для фильтрации сообщений из очереди на потребителях.
deduplication_key
string
optional
Ключ дедупликации. Используется для проверки повторных сообщений. Если не указан, проверка не выполняется.
payload
bytes
Произвольные данные в бинарном формате (тело сообщения)
metadata
repeated
Произвольные данные в формате списка пар ключ-значение.
replicasets
string
repeated
Список названий наборов реплик, на которые нужно опубликовать сообщение. По умолчанию рассылка происходит на все шарды.
timeout
uint64
optional
Максимальное время рассылки сообщения

BroadcastResponse

Ответ на рассылку сообщения.

Field
Type
Label
Description
code
uint32
Код завершения рассылки: 0 - Успешная публикация 1 - Ошибка на роутере 2 - Ошибка на наборе реплик
error
string
optional
Сообщение об ошибке
replicasets
repeated
Набор ответов с шардов
cursor
string
optional
Курсор подписки, собранный из оффсетов успешно опубликованных сообщений по шардам. Передается напрямую в поле cursor запроса SubscribeRequest для подписки начиная с позиции сразу после broadcast-сообщения. Отсутствует, если ни один шард не обработан успешно. Формат курсора определяется параметром cursor_serializer (по умолчанию base64).

BroadcastResponse.ReplicasetsEntry

Field
Type
Label
Description
key
string
value

ReplicasetResponse

Ответ набора реплик на публикацию сообщения.

Field
Type
Label
Description
success
Сообщение об успешной публикации
error
Сообщение об ошибке публикации

Success

Сообщение об успешной публикации.

Field
Type
Label
Description
id
uint64
Идентификатор сообщения, добавленного в очередь

Error

Сообщение об ошибке публикации.

Field
Type
Label
Description
code
uint32
Код ошибки
message
string
Сообщение об ошибке

Consumer

Сервер подписок на сообщения брокера очередей.

Method Name
Request Type
Response Type
Description
Subscribe
Подписка на сообщения с фильтрацией

SubscriptionStreamRequest

Поток запросов на подписку.

Field
Type
Label
Description
subscribe_request
Запрос на подписку
commit_request
Запрос на обновление курсора персистентной подписки

SubscriptionRequest

Запрос на подписку.

Field
Type
Label
Description
queue
string
Название очереди
routing_key
string
optional
Ключ маршрутизации сообщения (тип сообщения). Используется для фильтрации сообщений из очереди. Если не указан, подписка происходит на все типы сообщений в очереди.
cursor
string
optional
Курсор - указатель на последнее полученное сообщение. Используется для получения истории сообщений или восстановления работы потребителя после сбоя, а также при истечении времени, указанного в ttl при наличии персистентной подписки. Если значение не указано, подписка возобновляется с текущего момента. Пустая строка - подписка с начала очереди. Непустое значение - подписка с указанного сообщения в очереди.
sharding_key
string
optional
Ключ шардирования. Используется для распределения данных в системе. Если не указан, подписка происходит на все типы сообщений в очереди. При включенном режиме статического шардирования должен находиться в диапазоне идентификаторов бакетов карты распределения.
sharding_keys
string
repeated
Ключи шардирования позволяют фильтровать по нескольким ключам шардирования в пределах одной подписки. При включенном режиме статического шардирования должны находиться в диапазоне идентификаторов бакетов карты распределения.
consume_id
string
optional
Уникальный идентификатор подписки. По значению этого параметра система может создать персистентную подписку и восстановить её сохраненное состояние, чтобы возобновить передачу сообщений с последней сохраненной позиции.
ttl
float
Время жизни состояния подписки. Параметр используется совместно с параметром consume_id для управления временем жизни подписки. Подписка очищается вместе со всем состоянием по прошествии времени, указанного в ttl, при отключении от подписки. При повторном подключении запросом SubscriptionRequest после истечения ttl клиенту с тем же значением consume_id необходимо учитывать значение параметра cursor.
restore
boolean
optional
Позволяет игнорировать курсор при восстановлении подписки. Если указано значение false (используется по умолчанию) система требует точного совпадения переданного в запросе курсора с сохраненным значением, и при несовпадении операция завершается ошибкой. При значении true система начинает или возобновляет подписку с позиции курсора в хранилище, игнорируя значение cursor в запросе.

CommitRequest

Запрос на обновление курсора персистентной подписки.

Field
Type
Label
Description
cursor
string
Указатель на последнее обработанное сообщение в очереди. При подписке необходимо выполнять обновление курсора как минимум для последнего сообщения из каждого пакета сообщений. При этом можно обновлять курсор и для отдельных сообщений, соблюдая это правило.

SubscriptionStreamResponse

Поток ответов подписки.

Field
Type
Label
Description
notifications
Сообщения в стриме подписки
commit_response
Ответ на обновление состояния подписки

SubscriptionNotifications

Сообщение в стриме подписки.

Field
Type
Label
Description
notifications
repeated
Новые сообщения в очереди с курсорами

SubscriptionNotification

Уведомление клиента о новых сообщениях в очереди.

Field
Type
Label
Description
cursor
string
Строка-указатель сообщения
message
Сообщение

QueueMessage

Сообщение в очереди.

Field
Type
Label
Description
id
uint64
Идентификатор сообщения. Заполняется автоматически при записи сообщения в очередь.
queue
string
Название очереди, в которую необходимо опубликовать сообщение
routing_key
string
optional
Ключ маршрутизации сообщения (тип сообщения). Используется для фильтрации сообщений из очереди на потребителях.
sharding_key
string
optional
Ключ шардирования. Используется для распределения данных в системе. При включенном режиме статического шардирования должен находиться в диапазоне идентификаторов бакетов карты распределения.
deduplication_key
string
optional
Ключ дедупликации. Используется для проверки повторных сообщений. Если не указан, проверка не выполняется.
payload
bytes
Произвольные данные в бинарном формате (тело сообщения)
metadata
repeated
Произвольные данные в формате списка пар ключ-значение
timestamp
int64
Время вставки сообщения в очередь в наносекундах

Pair

Пара ключ-значение.

Field
Type
Label
Description
key
string
Ключ пары
value
string
Значение пары

CommitResponse

Ответ на обновление состояния подписки.

Field
Type
Label
Description
cursor
string
Обновленная строка-указатель сообщения

ConsumeGroupStreamRequest

Поток запросов к группе потребителей.

Field
Type
Label
Description
consume_request
Запрос к группе потребителей
commit_request
Запрос на подтверждение обработки сообщения

ConsumeGroupStreamResponse

Поток ответов к группе потребителей.

Field
Type
Label
Description
consume_response
Сообщение в стриме подписки
commit_response
Ответ на подтверждение обработки сообщения

ConsumeGroupRequest

Запрос в группу потребителей.

Field
Type
Label
Description
group_id
string
Идентификатор группы потребителей. Если группы с указанным идентификатором не существует, Оркестратор создает новую группу.
queue
string
Название очереди
routing_key
string
optional
Ключ фильтрации
ttl
float
optional
Время жизни состояния подписки

ConsumeGroupResponse

Ответ с потребленными сообщениями группы.

Field
Type
Label
Description
notifications
repeated
Список потребленных сообщений

CommitGroupRequest

Запрос на подтверждение обработки сообщения группы потребителей.

Field
Type
Label
Description
cursor
string
Строка-указатель на сообщение

CommitGroupResponse

Ответ на подтверждение обработки сообщения группы потребителей.

Field
Type
Label
Description
cursor
string
Обновленная строка-указатель сообщения
status
CommitStatus
Результат подтверждения обработки сообщения: COMMIT_STATUS_OK (успех) или COMMIT_STATUS_ABORTED (отклонено)
error_message
string
optional
Описание ошибки подтверждения. Отсутствует при успешном коммите.

ConsumeGroupNotification

Уведомление о сообщении в группу потребителей.

Field
Type
Label
Description
cursor
string
Строка-указатель на текущее сообщение
message
Сообщение

Iam

Сервис управления пользователями, ролями и секретами gRPC API. Полное имя метода — /tarantool.queue_ee.Iam/<Method>. Для вызова любого метода нужно право tqe.admin, тип аутентификации — базовая. Пользователи, роли и секреты хранятся в конфиг-хранилище кластера (TCS или etcd).

Права, встроенные роли и шаблоны очередей описаны в разделе Уровень gRPC (базовая аутентификация + RBAC).

Method Name
Request Type
Response Type
Description
ListUsers
Получить список всех пользователей
GetUser
Получить пользователя по имени
CreateUser
Создать пользователя
UpdateUser
Обновить пользователя (описание)
DeleteUser
Удалить пользователя по имени
GrantRole
Назначить пользователю роль на шаблоны очередей
RevokeRole
Снять или сузить роль у пользователя
SetPassword
Создать или сменить пароль пользователя
ListRoles
Получить список всех ролей
GetRole
Получить роль по имени
CreateRole
Создать роль
UpdateRole
Обновить роль (описание и/или список прав)
DeleteRole
Удалить роль по имени

Параметры запросов проверяются. При нарушении метод возвращает ошибку InvalidArgument, при попытке изменить или удалить встроенную роль — FailedPrecondition (builtin role is immutable).

  • Имя пользователя и роли не может быть пустым;
  • Имена Admin, Producer и Consumer зарезервированы за встроенными ролями — создать роль с таким именем нельзя;
  • permissions не может быть пустым; допускаются только tqe.admin, tqe.produce и tqe.consume;
  • queue_patterns в GrantRole не может быть пустым; пустая строка — ошибка;
  • Пароль короче password_policy.min_length — InvalidArgument;
  • Повторное использование пароля из истории — InvalidArgument (password: already used).

User

Пользователь.

Field
Type
Label
Description
id
string
Идентификатор пользователя
name
string
Уникальное имя пользователя (логин)
description
string
Описание пользователя
role_grants
repeated
Назначения ролей пользователю
create_time
Timestamp
Время создания пользователя
update_time
Timestamp
Время последнего обновления пользователя

RoleGrant

Назначение роли пользователю на набор шаблонов очередей.

Field
Type
Label
Description
role
string
Имя роли
queue_patterns
string
repeated
Шаблоны очередей, на которые распространяется роль

Role

Роль.

Field
Type
Label
Description
id
string
Идентификатор роли
name
string
Уникальное имя роли
description
string
Описание роли
permissions
string
repeated
Список прав

Secret

Метаданные секрета.

Field
Type
Label
Description
user_id
string
Идентификатор владельца секрета
type
string
Тип секрета (всегда password)
public_key
string
Публичная часть секрета (логин)
state
string
Состояние секрета (active, locked, expired)
create_time
Timestamp
Время создания секрета
update_time
Timestamp
Время последнего обновления секрета

Состояния locked (после lockout_threshold неудачных попыток) и expired снимаются вызовом SetPassword.

ListUsersRequest

Запрос списка пользователей. Пустой запрос (не содержит полей).

ListUsersResponse

Ответ со списком пользователей.

Field
Type
Label
Description
users
repeated
Список пользователей

GetUserRequest

Запрос пользователя по имени.

Field
Type
Label
Description
name
string
Имя пользователя

CreateUserRequest

Запрос на создание пользователя.

Field
Type
Label
Description
name
string
Имя пользователя
description
string
Описание пользователя

Созданный пользователь не имеет пароля и не может аутентифицироваться, пока не вызван SetPassword.

UpdateUserRequest

Запрос на обновление пользователя.

Field
Type
Label
Description
name
string
Имя пользователя
description
string
Описание пользователя

Метод переписывает только описание. Переименовать пользователя нельзя.

DeleteUserRequest

Запрос на удаление пользователя.

Field
Type
Label
Description
name
string
Имя пользователя

DeleteUserResponse

Ответное сообщение DeleteUserResponse приходит пустым (не содержит полей).

GrantRoleRequest

Запрос на назначение роли пользователю.

Field
Type
Label
Description
name
string
Имя пользователя
role
string
Имя роли
queue_patterns
string
repeated
Шаблоны очередей, на которые распространяется назначаемая роль. Может быть точным именем очереди или обратной маской; пустой шаблон — ошибка.

Только расширяет привилегии, добавляя шаблоны из запроса к уже выданным.

RevokeRoleRequest

Запрос на снятие/сужение роли у пользователя.

Field
Type
Label
Description
name
string
Имя пользователя
role
string
Имя роли
queue_patterns
string
repeated
Список шаблонов очередей, для которых отзывается роль. Пустой список — роль отзывается со всех очередей.

Шаблон в запросе сравнивается с текущими шаблонами без раскрытия маски. Если пользователю выдан orders.*, отзыв orders.new ничего не изменит, потому что именно такого шаблона в гранте нет. Чтобы оставить доступ только к одной очереди, снимите orders.* и выдайте роль на нужные очереди заново.

SetPasswordRequest

Запрос на установку/смену пароля пользователя.

Field
Type
Label
Description
name
string
Имя пользователя
password
string
Пароль

Логин, под которым предъявляется пароль (имя пользователя). Ответ Secret не содержит ни пароль, ни его хэш. Пароль не может быть длиннее 72 байт.

ListRolesRequest

Запрос списка ролей. Пустой запрос (не содержит полей).

ListRolesResponse

Ответ со списком ролей.

Field
Type
Label
Description
roles
repeated
Список ролей

GetRoleRequest

Запрос роли по имени.

Field
Type
Label
Description
name
string
Имя роли

CreateRoleRequest

Запрос на создание роли.

Field
Type
Label
Description
name
string
Имя роли
description
string
Описание роли
permissions
string
repeated
Список прав роли

UpdateRoleRequest

Запрос на обновление роли.

Field
Type
Label
Description
name
string
Имя роли
description
string
Описание роли
permissions
string
repeated
Список прав роли

DeleteRoleRequest

Запрос на удаление роли.

Field
Type
Label
Description
name
string
Имя роли

Роль удаляется, только если она не выдана ни одному пользователю. Сначала снимите её с держателей вызовом RevokeRole.

DeleteRoleResponse

Ответное сообщение DeleteRoleResponse приходит пустым (не содержит полей).

Коды ошибок

Код
Когда
Пример
InvalidArgument
запрос не проходит проверку параметров
name: must not be empty, permissions: must not be empty, password: already used
NotFound
названной сущности нет
auth store: entity not found: user "nobody"
AlreadyExists
имя занято
auth store: entity name already taken: name "orders-svc" …
FailedPrecondition
операция невозможна в текущем состоянии
builtin role is immutable, auth store: role is granted to users: …
Aborted
конкурентные записи не разошлись
auth store: collection updated concurrently: …
Unauthenticated
учетные данные не сошлись
authentication failed
PermissionDenied
нет права tqe.admin
permission denied
Unavailable
сбой хранилища
iam: …
Была ли статья полезна?