queues 示例源码
这些文件来自仓库的 examples/queues,可结合对应中文文档阅读和运行。
wrangler.jsonc
{
"name": "queues",
"main": "index.js",
"compatibility_date": "2026-01-01",
"queues": {
"producers": [{ "binding": "JOBS", "queue": "example-jobs" }],
"consumers": [
{
"queue": "example-jobs",
"max_batch_size": 10,
"max_batch_timeout": 5,
"max_retries": 2,
"dead_letter_queue": "example-jobs-dead-letter"
},
{ "queue": "example-jobs-dead-letter" }
]
}
}
index.js
export default {
async fetch(request, env) {
const job = {
path: new URL(request.url).pathname,
createdAt: new Date().toISOString(),
};
await env.JOBS.send(job);
return Response.json({ queued: job });
},
async queue(batch) {
for (const message of batch.messages) {
if (batch.queue === "example-jobs-dead-letter") {
console.log("dead job", message.body);
message.ack();
continue;
}
if (message.body.path.endsWith("/fail")) {
console.log("retrying job", message.body, message.attempts);
message.retry({ delaySeconds: 1 });
continue;
}
console.log("processing job", message.body);
message.ack();
}
},
};