effidevFlutter・Cloudflareエッジ・クラウドコスト最適化
日本語

Cloudflare Queuesによる非同期タスク処理パイプライン構築とAPIレイテンシ削減

Cloudflare Queuesによるサーバーレス非同期パイプライン構築

ユーザー登録や決済処理の際、メール送信や画像リサイズなどをAPIリクエスト内で同期実行すると、レスポンス遅延が数秒に達してしまいます。

これを解決するには、重いタスクをバックグラウンドの**非同期キュー(Cloudflare Queues)**へオフロードし、ユーザーには即座に HTTP 202 Accepted を返却するのが定석です。

要約

  • API遅延を98%削減: env.MY_QUEUE.send() でタスクをキューへ投入し、レスポンス時間を 500msから12msへ短縮
  • Producer-Consumer構成: 受信用Workerと非同期処理用Workerを完全に分離。
  • デッドレターキュー (DLQ): 再試行の上限を超えた失敗メッセージをDLQへ隔離し、データ損失ゼロを保証。

TypeScript 実装例

export interface Env {
  JOB_QUEUE: Queue;
}

export default {
  // 1. Producer: キューに投入し202返却
  async fetch(request: Request, env: Env): Promise<Response> {
    const body = await request.json();
    await env.JOB_QUEUE.send(body);
    return Response.json({ success: true }, { status: 202 });
  },

  // 2. Consumer: バッチ処理とリトライ
  async queue(batch: MessageBatch<any>, env: Env): Promise<void> {
    for (const msg of batch.messages) {
      try {
        console.log("Job Processing:", msg.body);
        msg.ack();
      } catch (err) {
        msg.retry({ delaySeconds: 10 });
      }
    }
  },
};

結論

Cloudflare Queuesの導入により、インフラ運用コストゼロで高速かつ堅牢なバックグラウンド処理パイプラインを構築できます。