simpleQueue

Скачать simpleQueue в магазине дополнений →
05 мая 2019, 07:00

Простая очередь сообщений для использования в любых сторонних компонентах. Очередь сообщений удобно использовать в случаях, когда необходимо в одном потоке добавить сообщение о новом действии, а в другом потоке его выполнить. Просто пример: отправка писем. В основном процессе добавляется сообщение о новом исходящем письме, а отдельным скриптом осуществляется отправка письма.

Использовать возможно как на уровне объектов, так и на уровне процессоров.

Подключение сервиса

Стандартный вызов:

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, сохраняющие состояние сообщений после их сохранения.