Skip to content
open-computeopen-computeopen-compute

Queues

Queues 将消息从生产者 Worker 投递给消费者 Worker。投递语义为 at-least-once:在崩溃或重试时,消息可能被重复处理。队列状态存储在本机 scheduler.sqlite

例如:

  • 解耦生产者与消费者 Worker
  • 缓冲异步任务
  • 失败后重试投递
export default {
async fetch(request: Request, env: Env): Promise<Response> {
await env.QUEUE.send({ hello: "world" });
return new Response("queued");
},
async queue(batch: MessageBatch<{ hello: string }>, env: Env): Promise<void> {
for (const message of batch.messages) {
console.log(message.body);
message.ack();
}
},
} satisfies ExportedHandler<{ QUEUE: Queue }>;

wrangler.jsonc 中绑定生产者:

{
"name": "queue-app",
"main": "src/index.ts",
"queues": {
"producers": [{ "binding": "QUEUE", "queue": "jobs" }],
"consumers": [{ "queue": "jobs", "max_batch_size": 10 }]
}
}

消费者通过 queues.consumers 指向 Worker 的 queue handler。语法见绑定。固定 Wrangler 负责 queue provisioning 与 consumer 配置。

主题 Cloudflare open-compute
JavaScript API Queues JavaScript APIs 相同:send / sendBatchcontentType(json / text / bytes / v8)、delaySecondsmetrics、消费者 MessageBatch / ack / retry
存储位置 全球复制 本机 scheduler.sqlite
投递语义 at-least-once at-least-once;不提供 exactly-once
全局 FIFO 提供 不提供
无法识别的 native dispatch 可能保留消息 lease,后续投递可能使用同一 attempt 编号
Pull consumer 提供 不提供
绑定 Wrangler queues 标准 producersconsumers 条目

下一步:使用 bindings 开发 · 兼容性与限制