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