Zum Inhalt springen

Webhooks

Queuety kann bei bestimmten Ereignissen HTTP-POST-Benachrichtigungen an externe URLs senden. Mit Webhooks kannst du Überwachungssysteme, Slack oder eigene Dashboards integrieren.

Unterstützte Ereignisse

Ereignis Auslöser
job.completed Ein einfacher Handler-Job oder eine Klasse Contracts\Job wird erfolgreich abgeschlossen (wird nicht bei Workflow-Schritten oder Aktionen einer State Machine ausgelöst)
job.failed Ein Versuch löst eine Ausnahme aus und ein erneuter Versuch wird geplant
job.buried Für einen Job sind alle Wiederholungsversuche ausgeschöpft
workflow.failed Ein Workflow-Schritt schlägt endgültig fehl

Webhooks registrieren

Über PHP:

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

Über CLI:

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

Webhooks auflisten

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

Webhooks entfernen

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

Payload-Format

Wenn ein Ereignis eintritt, sendet Queuety eine HTTP-POST-Anfrage mit einem JSON-Body. Die Payload hat immer diese Form:

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

Bei Workflow-Fehlern:

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

Die Zustellung von Webhooks erfolgt nach bestem Bemühen. Der Worker sendet nacheinander einen POST an jedes registrierte URL, wobei das Stream-Timeout eine Sekunde beträgt. Zustellfehler werden ignoriert. Ein langsamer Endpunkt kostet den Worker daher bis zu etwa eine Sekunde pro URL, führt aber niemals zum Fehlschlagen des Jobs.

Anwendungsfälle

  • Slack-Benachrichtigungen. Lass dich benachrichtigen, wenn Jobs im Hintergrund abgelegt werden oder Workflows fehlschlagen.
  • PagerDuty-Integration. Löse bei kritischen Job-Fehlern Vorfälle aus.
  • Eigene Dashboards. Übertrage Ereignisse an deine eigene Überwachungsinfrastruktur.
  • Prüfpfad. Leite Ereignisse an einen externen Protokollierungsdienst weiter.