Webhook
Queuety dapat mengirim notifikasi POST HTTP ke URL eksternal saat event tertentu terjadi. Gunakan webhook untuk integrasi dengan sistem pemantauan, Slack, atau dasbor khusus.
Event yang didukung
| Event | Dipicu saat |
|---|---|
job.completed |
Job handler biasa atau kelas Contracts\Job selesai dengan sukses (tidak dipicu untuk langkah alur kerja atau aksi mesin status) |
job.failed |
Sebuah percobaan gagal dan retry dijadwalkan |
job.buried |
Job menghabiskan semua percobaan retry |
workflow.failed |
Langkah alur kerja gagal secara permanen |
Mendaftarkan webhook
Melalui PHP:
PHP
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );
Melalui CLI:
Shell
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety
Melihat daftar webhook
PHP
$webhooks = Queuety::webhook_notifier()->list();
Shell
wp queuety webhook list
Menghapus webhook
PHP
Queuety::webhook_notifier()->remove( $webhook_id );
Shell
wp queuety webhook remove 3
Format payload
Saat sebuah event terjadi, Queuety mengirim permintaan POST HTTP dengan isi JSON. Bentuk payload selalu seperti berikut:
JSON
{
"event": "job.buried",
"data": {
"job_id": 42,
"handler": "send_email",
"queue": "emails",
"error_message": "Connection timed out"
},
"timestamp": "2025-03-15T14:30:00Z"
}
Untuk kegagalan alur kerja:
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"
}
Pengiriman webhook menggunakan upaya terbaik. Worker mengirim POST ke setiap URL yang terdaftar secara bergiliran dengan batas waktu stream satu detik dan mengabaikan kegagalan pengiriman. Karena itu, endpoint yang lambat dapat menahan worker hingga sekitar satu detik per URL, tetapi tidak pernah menyebabkan job gagal.
Kasus penggunaan
- Peringatan Slack. Dapatkan notifikasi saat job dikubur atau alur kerja gagal.
- Integrasi PagerDuty. Picu insiden untuk kegagalan job kritis.
- Dasbor khusus. Alirkan event ke infrastruktur pemantauan Anda sendiri.
- Jejak audit. Teruskan event ke layanan pencatatan eksternal.