Vai al contenuto

Webhook

Queuety può inviare notifiche POST HTTP a URL esterni al verificarsi di eventi specifici. Usate i webhook per integrare sistemi di monitoraggio, Slack o dashboard personalizzate.

Eventi supportati

Evento Quando viene attivato
job.completed Un job con gestore semplice o una classe Contracts\Job viene completato correttamente (non si attiva per i passaggi dei workflow né per le azioni delle macchine a stati)
job.failed Un tentativo genera un'eccezione e viene pianificato un nuovo tentativo
job.buried Un job esaurisce tutti i tentativi disponibili
workflow.failed Un passaggio del workflow fallisce definitivamente

Registrare i webhook

Tramite PHP:

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

Tramite CLI:

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

Elencare i webhook

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

Rimuovere i webhook

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

Formato del payload

Quando si verifica un evento, Queuety invia una richiesta POST HTTP con un corpo JSON. Il payload ha sempre questa struttura:

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

Per gli errori dei workflow:

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

La consegna dei webhook avviene in modalità best effort. Il worker invia una richiesta a ogni URL registrato, a turno, con un timeout dello stream di un secondo e ignora gli errori di consegna; un endpoint lento costa al worker fino a circa un secondo per URL, ma non causa mai il fallimento del job.

Casi d'uso

  • Avvisi Slack. Ricevete una notifica quando i job vengono messi in coda di quarantena o i workflow non riescono.
  • Integrazione PagerDuty. Attivate incidenti per gli errori critici dei job.
  • Dashboard personalizzate. Trasmettete gli eventi alla vostra infrastruttura di monitoraggio.
  • Traccia di controllo. Inoltrate gli eventi a un servizio di registrazione esterno.