Поддержка очередей сообщений
Описание
Под очередью сообщений далее понимается план их получения потребителями (consumer) от генерирующих сообщения и помещающих их в очередь отправителей (provider). Передаваемые сообщения (event) будут получены в рамках сеансов (batch).
Функция внешнего по отношению к СУБД менеджера очереди (manager), запускаемая с заданной периодичностью, генерирует элемент синхронизации очереди (tick). Наличие единого внешнего управляющего элемента позволяет избежать ситуаций гонки, достичь прогнозируемых количества сообщений и периодичности их получения.
Поддержка очередей сообщений доступна для редакции СУБД Pangolin Standard.
Функциональность очередей сообщений позволяет:
- определять очереди для передачи списка текстовых сообщений от «потребителя» в сторону одного или нескольких отправителей с использованием механизма монопольных или кооперативных очередей;
- организовывать очереди сообщений между разными сущностями СУБД вне зависимости от версии СУБД и разрядности операционной системы;
- накапливать сообщения от генератора и организовывать сеансы получения сообщений очереди;
- получить сообщение повторно через определенное время без возможности приоритизации;
- использовать менеджер сообщений средствами приложения, либо с использованием штатного менеджера сообщений;
- управлять получением сообщений в одном сеансе, в том числе с фильтрацией по содержимому сообщений;
- автоматически добавлять сообщения в определенную очередь посредством триггеров.
Расширение дополняет ролевую модель СУБД ролями, подробнее об этом в подразделе «Роли» расширения pgq
.
Настройка
Перед началом работы необходимо последовательно настроить следующие компоненты:
- Обязательные компоненты: расширение
pgq
, реализующее монопольную очередь сообщений, а также менеджер очередейpangolin-pgqd
, который является системным сервисом, предоставляющий элементы синхронизации (tick). Для этого сначала выполните установкуpgq
иpangolin-pgqd
, затем выполните настройку расширения и демонаpangolin-pgqd
. - Необязательный компонент: расширение
pgq_coop
, предоставляющее реализацию кооперативной очереди на основеpgq
. Выполните установкуpgq_coop
.
Управление
Расширение pgq
является обязательным элементом для организации очередей сообщений и предоставляет интерфейсы для создания и управления очередями, организации работы отправителя и получателя. Расширение создает служебную схему pgq
, содержащую служебные таблицы и функциональные интерфейсы работы. Дополнительная информация о расширении приведена в разделе «pgq. Организация монопольных очередей сообщений» документа «Описание расширений продукта СУБД Pangolin».
Ротация очереди, размещение и предоставление новых сообщений очереди основано на комбинации временных отметок и манипулировании правилами видимости строк на основании расчетов XID операций отправителя и получателя. Подробнее с интерфейсами и функциями, в том числе триггерными, можно ознакомиться в разделе «pgq. Организация монопольных очередей сообщений» документа «Описание расширений продукта СУБД Pangolin».
Расширение pgq_coop
предназначено для организации кооперативных очередей. В данной реализации один источник может быть связан с несколькими потребителями. Расширение является опциональным, требует установки расширения pgq
. Подробнее с описанием расширения можно ознакомиться в разделе «pgq_coop. Организация кооперативных очередей сообщений» документа «Описание расширений продукта СУБД Pangolin».
Использование модуля
С модулем можно работать в двух режимах:
- с использованием монопольной очереди (расширение
pgq
) можно ознакомиться в разделе «pgq. Организация монопольных очередей сообщений» документа «Описание расширений продукта СУБД Pangolin». - с использованием кооперативной очереди (расширение
pgq_coop
) можно ознакомиться в разделе «pgq_coop. Организация кооперативных очередей сообщений» документа «Описание расширений продукта СУБД Pangolin».
Использование механизма очередей сообщений с помощью расширений pgq
и pgq_coop
, а также системного сервиса pgqd
, связано с рядом архитектурных и операционных ограничений, которые необходимо учитывать при внедрении и сопровождении решения.
Управление очередями сообщений на ведомом сервере невозможно. Все операции с очередями должны выполняться только на ведущем сервере. В процессе развертывания необходимо предусмотреть установку и настройку сервиса pgqd
, если предполагается использование функциональности очередей.
Решение совместимо с потоковой и логической репликацией.
Решение совместимо с системами резервного копирования, работающими на файловом уровне. При выполнении логического дампа базы данных или ее восстановлении необходимо отключить менеджер очередей pgqd
на время операции.
Для организации передачи сообщений используются типы данных xid и производные от них. После восстановления данных возможны:
- значительные задержки при получении сообщений;
- изменение порядка обработки новых сообщений.
Перед созданием резервной копии рекомендуется полностью очистить все очереди сообщений.
Кроме того, использование xid-зависимой логики может повлиять на перенос существующего кластера базы данных с 32-битной системой идентификаторов транзакций (XID) на 64-битную.
Отключение функциональности
Отключение механизма очередей возможно при выполнении следующей последовательности действий:
- Остановить и отменить регистрацию сервиса
pangolin-pgqd
. - Удалить соответствующие строки из
pg_hba.conf
, относящиеся кpangolin-pgqd
. - Удалить расширения
pgq
иpgq_coop
из базы данных (опционально).