simpleQueue
Простая очередь сообщений для использования в любых сторонних компонентах.
Очередь сообщений удобно использовать в случаях, когда необходимо в одном потоке добавить сообщение о новом действии, а в другом потоке его выполнить.
Просто пример: отправка писем. В основном процессе добавляется сообщение о новом исходящем письме, а отдельным скриптом осуществляется отправка письма.
Использовать возможно как на уровне объектов, так и на уровне процессоров.
Подключение сервиса
Стандартный вызов:
sq = $this->modx->getService(
'simplequeue',
'simpleQueue',
$this->modx->getOption('simplequeue_core_path', null, $this->modx->getOption('core_path') . 'components/simplequeue/') . 'model/simplequeue/',
array()
);
Сокращенный вызов:
$sq = $modx->getService('simplequeue');
Чтобы он стал возможен, необходимо однократно выполнить код (можно в Console):
$modx->addExtensionPackage('simplequeue', '[[++core_path]]components/simplequeue/model/');
Объекты
Класс sqMessage
Поле | Назначение | Заполняется автоматически? |
---|---|---|
id | ID | Да |
service | произвольное название сервиса, добавившего сообщение | Нет |
action | произвольное название требуемого действия | Нет |
subject | детали для выполнения действия. Например, ID обрабатываемого объекта | Нет |
createdon | время создания, заполняется автоматически | Да |
createdby | ID пользователя, создавшего сообщение | Да |
processed | Флаг завершенности (bool) | Нет |
status | Статус, устанавливаемый сервисом | Нет |
properties | JSON массив с произвольными данными | Нет |
Класс sqLog
Поле | Назначение | Заполняется автоматически? |
---|---|---|
id | ID | Да |
message_id | ID измененного сообщения | Да |
user_id | ID пользователя, изменившего сообщение | Да |
timestamp | Штамп времени изменения | Да |
operation | Произведенное действие | Да |
entry | JSON массив с измененными полями и их значениями | Нет |
Процессоры
В комплекте с компонентом идут процессоры для сообщений:
Процессор | Назначение | Принимаемые параметры |
---|---|---|
create | Создание | service, action, subject, properties |
update | Обновление | id, status, properties |
close | Завершение | id |
open | Открытие | id |
get | Получение | id |
getlist | Получение списка | ids |
Пример вызова процессора:
$response = $modx->runProcessor(
'message/update',
array('id' => 1, 'status' => '5'),
array('processors_path' => MODX_CORE_PATH . 'components/simplequeue/processors/');
);
При использовании процессоров автоматически создаются записи лога sqLog, сохраняющие состояние сообщений после их сохранения.