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.