웹훅
Queuety은 특정 이벤트가 발생하면 외부 URL로 HTTP POST 알림을 보낼 수 있습니다. 웹훅을 사용하면 모니터링 시스템, Slack 또는 사용자 지정 대시보드와 통합할 수 있습니다.
지원 이벤트
| 이벤트 | 발생 시점 |
|---|---|
job.completed |
일반 핸들러 작업 또는 Contracts\Job 클래스가 성공적으로 완료될 때(워크플로 단계 또는 상태 머신 액션에서는 발생하지 않음) |
job.failed |
시도 중 예외가 발생하고 재시도가 예약될 때 |
job.buried |
작업의 모든 재시도 횟수를 소진할 때 |
workflow.failed |
워크플로 단계가 영구적으로 실패할 때 |
웹훅 등록
PHP을 통한 등록:
PHP
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );
CLI을 통해 확인:
셸
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety
웹훅 목록 보기
PHP
$webhooks = Queuety::webhook_notifier()->list();
셸
wp queuety webhook list
웹훅 삭제
PHP
Queuety::webhook_notifier()->remove( $webhook_id );
셸
wp queuety webhook remove 3
페이로드 형식
이벤트가 발생하면 Queuety은 HTTP POST 요청을 JSON 본문과 함께 보냅니다. 페이로드 형식은 항상 다음과 같습니다:
JSON
{
"event": "job.buried",
"data": {
"job_id": 42,
"handler": "send_email",
"queue": "emails",
"error_message": "Connection timed out"
},
"timestamp": "2025-03-15T14:30:00Z"
}
워크플로 실패의 경우:
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"
}
웹훅 전달은 최선을 다해 처리됩니다. 워커는 등록된 URL마다 차례로 요청을 보내며 스트림 시간 제한은 1초입니다. 전달 실패는 무시되므로 응답이 느린 엔드포인트는 URL당 워커를 최대 약 1초간 지연시킬 수 있지만 작업 자체는 실패하지 않습니다.
사용 사례
- Slack 알림. 작업이 대기열에 묻히거나 워크플로가 실패하면 알림을 받습니다.
- PagerDuty 통합. 중요한 작업이 실패하면 인시던트를 발생시킵니다.
- 사용자 지정 대시보드. 이벤트를 자체 모니터링 인프라로 스트리밍합니다.
- 감사 추적. 이벤트를 외부 로깅 서비스로 전달합니다.