~/VibeHandbook
$39

Cloudflare

developers.cloudflare.com

Queues

概要

Cloudflare Queues は、Workers のためのマネージドなメッセージキューです。ある Worker(プロデューサー)がメッセージをキューに積み、別の Worker(コンシューマー)がそれらのメッセージのバッチとともに呼び出されて処理します。これにより、遅かったり不安定だったりする作業を、それを引き起こしたリクエストから切り離せます — リクエストは素早く受け付け、作業はバックグラウンドで行うのです。

強み

  • プロデューサーとコンシューマーを分離し、トラフィックの急増をならします。
  • 自動的なバッチ処理、リトライ、そして失敗のためのデッドレターキュー。
  • 純粋な Workers 統合 — プロデューサーもコンシューマーも、どちらもバインディングを持つ Workers です。
  • 運用するインフラがありません。トラフィックに応じてスケールします。
  • 少なくとも 1 回の配信を保証するため、メッセージがこっそり失われることはありません。

トレードオフ

  • 少なくとも 1 回の配信ということは、コンシューマーは冪等であるべき(重複を処理できる)ということです。
  • 即時の同期レスポンス向けではありません — 作業は非同期に行われます。
  • 順序はベストエフォートであり、厳密なグローバル順序ではありません。
  • スループットとメッセージサイズには、設計時に考慮すべき上限があります。

使うべきとき

バックグラウンドジョブに Queues を使いましょう。メールの送信、アップロードの処理、遅いサードパーティ API の呼び出し、Webhook のファンアウト、書き込みのバッファリング — ユーザーを待たせたくないもの全般。

バイブコーディングとの相性

Queues は、エージェントがブローカーを立ち上げることなくバックグラウンド処理を追加するためのきれいな方法です。コンシューマーを冪等にする(メッセージキーを使う)こと、そして失敗が可視になるようデッドレターキューを設定することを依頼しましょう。次の設定は、1 つの Worker をキューのプロデューサー兼コンシューマーとして配線しています。

# wrangler.toml
[[queues.producers]]
queue = "jobs"
binding = "JOBS"

[[queues.consumers]]
queue = "jobs"
max_batch_size = 10
dead_letter_queue = "jobs-dlq"
npx wrangler queues create jobs
npx wrangler deploy