Перейти к содержимому

Веб-хуки

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. Создавайте инциденты при критических сбоях задач.
  • Пользовательские панели мониторинга. Передавайте события в собственную инфраструктуру мониторинга.
  • Журнал аудита. Пересылайте события во внешнюю службу ведения журналов.