Treci la conținut

Webhookuri

Queuety poate trimite notificări HTTP POST către URL-uri externe atunci când au loc anumite evenimente. Folosiți webhookurile pentru integrarea cu sisteme de monitorizare, Slack sau tablouri de bord personalizate.

Evenimente acceptate

Eveniment Se declanșează când
job.completed Un job cu handler simplu sau o clasă Contracts\Job se încheie cu succes (nu se declanșează pentru pașii fluxurilor de lucru sau acțiunile mașinilor de stări)
job.failed O încercare eșuează cu o excepție și este programată o reîncercare
job.buried Un job își epuizează toate încercările de reîncercare
workflow.failed Un pas al fluxului de lucru eșuează definitiv

Înregistrarea webhookurilor

Prin PHP:

PHP
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );

Prin CLI:

Shell
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety

Listarea webhookurilor

PHP
$webhooks = Queuety::webhook_notifier()->list();
Shell
wp queuety webhook list

Eliminarea webhookurilor

PHP
Queuety::webhook_notifier()->remove( $webhook_id );
Shell
wp queuety webhook remove 3

Formatul payloadului

Când se declanșează un eveniment, Queuety trimite o cerere HTTP POST cu un corp JSON. Payloadul are întotdeauna următoarea structură:

JSON
{
    "event": "job.buried",
    "data": {
        "job_id": 42,
        "handler": "send_email",
        "queue": "emails",
        "error_message": "Connection timed out"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}

Pentru eșecurile fluxurilor de lucru:

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

Livrarea webhookurilor se face în limita posibilităților. Workerul trimite cereri către fiecare URL înregistrat, pe rând, cu un timeout de o secundă pentru fluxul de date, și ignoră eșecurile de livrare; astfel, un endpoint lent poate întârzia workerul cu până la aproximativ o secundă pentru fiecare URL, dar nu provoacă eșecul jobului.

Cazuri de utilizare

  • Slack alerte. Primiți notificări când joburile sunt îngropate sau fluxurile de lucru eșuează.
  • PagerDuty integrare. Declanșați incidente pentru eșecurile critice ale joburilor.
  • Tablouri de bord personalizate. Transmiteți evenimente către propria infrastructură de monitorizare.
  • Jurnal de audit. Redirecționați evenimente către un serviciu extern de jurnalizare.