[ PROMPT_NODE_24220 ]
Queues 配置说明
[ SKILL_DOCUMENTATION ]
# 队列配置
## 创建队列
bash
wrangler queues create my-queue
wrangler queues create my-queue --retention-period-hours=336 # 14 天
wrangler queues create my-queue --delivery-delay-secs=300
## 生产者绑定
**wrangler.jsonc:**
c
{
"queues": {
"producers": [
{
"queue": "my-queue-name",
"binding": "MY_QUEUE",
"delivery_delay": 60 // 可选:默认延迟(秒)
}
]
}
}
## 消费者配置(基于推送)
**wrangler.jsonc:**
c
{
"queues": {
"consumers": [
{
"queue": "my-queue-name",
"max_batch_size": 10, // 1-100,默认 10
"max_batch_timeout": 5, // 0-60秒,默认 5
"max_retries": 3, // 默认 3,最大 100
"dead_letter_queue": "my-dlq", // 可选
"retry_delay": 300 // 可选:重试延迟(秒)
}
]
}
}
## 消费者配置(基于拉取)
**wrangler.jsonc:**
c
{
"queues": {
"consumers": [
{
"queue": "my-queue-name",
"type": "http_pull",
"visibility_timeout_ms": 5000, // 默认 30000,最大 12 小时
"max_retries": 5,
"dead_letter_queue": "my-dlq"
}
]
}
}
## TypeScript 类型
typescript
interface Env {
MY_QUEUE: Queue;
ANALYTICS_QUEUE: Queue;
}
interface MessageBody {
id: string;
action: 'create' | 'update' | 'delete';
data: Record;
}
export default {
async queue(batch: MessageBatch, env: Env): Promise {
for (const msg of batch.messages) {
console.log(msg.body.action);
msg.ack();
}
}
} satisfies ExportedHandler;
## 内容类型选择
根据消费者类型和数据需求选择内容类型:
| 内容类型 | 使用场景 | 可读性 | 支持类型 | 大小 |
|--------------|----------|-------------|----------|------|
| `json` | 拉取消费者、仪表板可见性、简单对象 | 全部 (推送/拉取/仪表板) | 仅 JSON 可序列化类型 | 中 |
| `v8` | 仅推送消费者、复杂 JS 对象 | 仅推送消费者 | Date, Map, Set, BigInt, 类型化数组 | 小 |
| `text` | 仅字符串负载 | 全部 | 仅字符串 | 最小 |
| `bytes` | 二进制数据(图片、文件) | 全部 | ArrayBuffer, Uint8Array | 可变 |
**决策树:**
1. 需要在仪表板查看或使用拉取消费者? → 使用 `json`
2. 需要 Date, Map, Set 或其他 V8 类型?