Webhook
特定のイベントが発生したとき、Queuetyは外部URLにHTTP POST通知を送信できます。Webhookを使って、監視システム、Slack、カスタムダッシュボードと連携できます。
対応イベント
| イベント | 発生するタイミング |
|---|---|
job.completed |
通常のハンドラージョブまたはContracts\Jobクラスが正常に終了したとき(ワークフローステップや状態マシンアクションでは発生しません) |
job.failed |
試行中に例外が発生し、再試行が予定されたとき |
job.buried |
ジョブがすべての再試行を使い切ったとき |
workflow.failed |
ワークフローステップが恒久的に失敗したとき |
Webhookの登録
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
Webhookの一覧
PHP
$webhooks = Queuety::webhook_notifier()->list();
シェル
wp queuety webhook list
Webhookの削除
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"
}
Webhookの配信はベストエフォートです。ワーカーは登録された各URLに順番にリクエストを送ります。ストリームのタイムアウトは1秒で、配信の失敗は無視されます。そのため、応答の遅いエンドポイントはURLごとにワーカーを最大約1秒停止させることがありますが、ジョブが失敗することはありません。
活用例
- Slack通知。 ジョブが隔離されたりワークフローが失敗したりしたときに通知を受け取れます。
- PagerDutyとの連携。 重大なジョブの失敗時にインシデントを発生させます。
- カスタムダッシュボード。 イベントを独自の監視インフラに送信します。
- 監査記録。 イベントを外部のログサービスに転送します。