Перейти до вмісту

Вебхуки

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"
}

Доставка вебхуків виконується за принципом best effort. Робочий процес надсилає запит до кожного зареєстрованого URL по черзі з тайм-аутом потокового передавання в одну секунду та ігнорує помилки доставки. Повільна кінцева точка може затримати робочий процес приблизно на секунду для кожного URL, але завдання не завершується помилкою.

Варіанти використання

  • Сповіщення Slack. Отримуйте сповіщення, коли завдання переміщуються до відкладених або робочі потоки завершуються помилкою.
  • Інтеграція PagerDuty. Створюйте інциденти у разі критичних помилок завдань.
  • Власні панелі керування. Передавайте події до власної інфраструктури моніторингу.
  • Журнал аудиту. Пересилайте події до зовнішньої служби журналювання.