Aller au contenu

Webhooks

Queuety peut envoyer des notifications POST HTTP à des URL externes lorsque certains événements se produisent. Utilisez les webhooks pour intégrer des systèmes de surveillance, Slack ou des tableaux de bord personnalisés.

Événements pris en charge

Événement Déclenché lorsque
job.completed Un job utilisant un gestionnaire classique ou une classe Contracts\Job se termine avec succès (n’est pas déclenché pour les étapes de workflow ni les actions de machine à états)
job.failed Une tentative échoue et une nouvelle tentative est planifiée
job.buried Un job a épuisé toutes ses tentatives
workflow.failed Une étape de workflow échoue définitivement

Enregistrer des webhooks

Via PHP :

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

Via CLI :

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

Répertorier les webhooks

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

Supprimer des webhooks

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

Format de la charge utile

Lorsqu’un événement se produit, Queuety envoie une requête POST HTTP avec un corps JSON. La charge utile suit toujours cette structure :

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

Pour les échecs de 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 livraison des webhooks est assurée au mieux. Le worker envoie une requête à chaque URL enregistré, à tour de rôle, avec un délai d’expiration d’une seconde pour le flux, et ignore les échecs de livraison. Un point de terminaison lent peut donc immobiliser le worker jusqu’à environ une seconde par URL, sans jamais faire échouer le job.

Cas d’utilisation

  • Alertes Slack. Soyez informé lorsque des tâches sont mises en attente ou que des workflows échouent.
  • Intégration PagerDuty. Déclenchez des incidents en cas d'échec critique d'une tâche.
  • Tableaux de bord personnalisés. Transmettez les événements à votre propre infrastructure de supervision.
  • Piste d'audit. Transmettez les événements à un service de journalisation externe.