Отслеживание событий
Начиная с 2.10.0.
Модуль box содержит средства для подписки на события, также известные
как наблюдатели. Подписки
используются для информирования клиента о серверных
событиях. Каждая подписка на
событие определяется определённым ключом.
Событие – это изменение состояния или системное обновление, которое запускает действия других систем. Подробнее о встроенных событиях в Tarantool см. в разделе системные события.
Состояние – это внутренняя пара «ключ-значение». Ключ – строка.
Значение – произвольный тип, который можно закодировать в MsgPack.
Для обновления состояния используйте функцию box.broadcast().
Наблюдатель – это функция обратного вызова, которая
вызывается при изменении состояния. Для регистрации локального
наблюдателя используйте функцию box.watch(). Для создания
удалённого наблюдателя используйте функцию watch() из модуля
net.box. Обратите внимание, что для одного и того же ключа можно
зарегистрировать несколько наблюдателей.
Сначала регистрируется наблюдатель. После этого функция обратного вызова наблюдателя вызывается в первый раз. В этом случае обратный вызов срабатывает независимо от того, был ли уже транслирован ключ. Все последующие вызовы инициируются с помощью box.broadcast(), вызываемого на удалённом хосте. Если наблюдатель подписан на ключ, который ещё не был транслирован, обратный вызов срабатывает только один раз — после регистрации наблюдателя.
Функция обратного вызова наблюдателя принимает два аргумента. Первый аргумент — имя ключа, для которого она была зарегистрирована. Второй — текущие данные ключа. Обратный вызов всегда выполняется в новом файбере. Это означает, что в нём можно делать yield. Обратный вызов наблюдателя никогда не выполняется параллельно с самим собой. Если ключ обновляется во время выполнения обратного вызова наблюдателя, обратный вызов будет вызван повторно с новым значением сразу после завершения текущего вызова.
Функции box.watch и box.broadcast можно использовать до вызова
box.cfg.
Ниже приведён список всех функций и страниц, связанных с наблюдателями или событиями.
Имя | Назначение |
|---|---|
Создание локального наблюдателя. | |
Получение текущего значения ключа. | |
Создание наблюдателя для удалённого хоста. | |
Обновление состояния. | |
Предопределённые события в Tarantool |