Przejdź do treści

Webhooki

Queuety może wysyłać powiadomienia POST HTTP do zewnętrznych adresów URL, gdy wystąpią określone zdarzenia. Używaj webhooków do integracji z systemami monitorowania, Slack lub własnymi pulpitami nawigacyjnymi.

Obsługiwane zdarzenia

Zdarzenie Występuje, gdy
job.completed Zwykłe zadanie handlera lub klasa Contracts\Job kończy się powodzeniem (zdarzenie nie jest wywoływane dla kroków przepływu pracy ani akcji maszyn stanów)
job.failed Próba zgłasza wyjątek i zaplanowano ponowienie
job.buried Wyczerpano wszystkie próby ponowienia zadania
workflow.failed Krok przepływu pracy kończy się niepowodzeniem i nie będzie ponawiany

Rejestrowanie webhooków

Za pomocą PHP:

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

Za pomocą CLI:

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

Wyświetlanie webhooków

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

Usuwanie webhooków

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

Format ładunku

Gdy wystąpi zdarzenie, Queuety wysyła żądanie POST HTTP z treścią w formacie JSON. Ładunek ma zawsze następującą postać:

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

W przypadku niepowodzeń przepływu pracy:

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

Dostarczanie webhooków odbywa się bez gwarancji powodzenia. Worker wysyła żądanie kolejno do każdego zarejestrowanego URL, z jednsekundowym limitem czasu przesyłania danych, i ignoruje błędy dostarczenia. Powolny punkt końcowy może więc kosztować workera do około sekundy na każde URL, ale nigdy nie powoduje niepowodzenia zadania.

Zastosowania

  • Slack alerty. Otrzymuj powiadomienia, gdy zadania zostaną odłożone do archiwum lub przepływy pracy zakończą się niepowodzeniem.
  • PagerDuty integracja. Wywołuj incydenty w przypadku krytycznych awarii zadań.
  • Własne pulpity. Przesyłaj zdarzenia do własnej infrastruktury monitorującej.
  • Ścieżka audytu. Przekazuj zdarzenia do zewnętrznej usługi rejestrowania.