Веб-хуки
Queuety может отправлять HTTP-уведомления POST на внешние URL при наступлении определенных событий. Используйте веб-хуки для интеграции с системами мониторинга, Slack или собственными панелями мониторинга.
Поддерживаемые события
| Событие | Когда срабатывает |
|---|---|
job.completed |
Обычная задача обработчика или класс Contracts\Job завершается успешно (не срабатывает для шагов рабочих последовательностей или действий конечных автоматов) |
job.failed |
Возникает исключение при попытке, и назначается повторная попытка |
job.buried |
У задачи заканчиваются все попытки повтора |
workflow.failed |
Шаг рабочей последовательности завершается с неисправимой ошибкой |
Регистрация веб-хуков
Через PHP:
PHP
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );
Через CLI:
Командная оболочка
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety
Просмотр веб-хуков
PHP
$webhooks = Queuety::webhook_notifier()->list();
Командная оболочка
wp queuety webhook list
Удаление веб-хуков
PHP
Queuety::webhook_notifier()->remove( $webhook_id );
Командная оболочка
wp queuety webhook remove 3
Формат данных
При возникновении события Queuety отправляет запрос POST HTTP с телом в формате JSON. Структура данных всегда следующая:
JSON
{
"event": "job.buried",
"data": {
"job_id": 42,
"handler": "send_email",
"queue": "emails",
"error_message": "Connection timed out"
},
"timestamp": "2025-03-15T14:30:00Z"
}
При ошибках рабочих последовательностей:
JSON
{
"event": "workflow.failed",
"data": {
"workflow_id": 7,
"job_id": 42,
"handler": "CallLlmStep",
"error_message": "API rate limit exceeded"
},
"timestamp": "2025-03-15T14:30:00Z"
}
Доставка веб-хуков выполняется по принципу максимальных усилий. Рабочий процесс по очереди отправляет запросы к каждому зарегистрированному URL с тайм-аутом потока в одну секунду и игнорирует ошибки доставки. Поэтому медленная конечная точка может задержать рабочий процесс примерно на секунду для каждого URL, но никогда не приводит к сбою задачи.
Сценарии использования
- Оповещения Slack. Получайте уведомления, когда задачи помещаются в архив или рабочие последовательности завершаются с ошибкой.
- Интеграция PagerDuty. Создавайте инциденты при критических сбоях задач.
- Пользовательские панели мониторинга. Передавайте события в собственную инфраструктуру мониторинга.
- Журнал аудита. Пересылайте события во внешнюю службу ведения журналов.