[ PROMPT_NODE_24352 ]
Tail Workers 配置说明
[ SKILL_DOCUMENTATION ]
# Tail Workers 配置
## 设置步骤
### 1. 创建 Tail Worker
创建一个带有 `tail()` 处理器的 Worker:
typescript
export default {
async tail(events, env, ctx) {
// 处理来自生产者 Worker 的事件
ctx.waitUntil(
fetch(env.LOG_ENDPOINT, {
method: "POST",
body: JSON.stringify(events),
})
);
}
};
### 2. 配置生产者 Worker
在生产者的 `wrangler.jsonc` 中:
c
{
"name": "my-producer-worker",
"tail_consumers": [
{
"service": "my-tail-worker"
}
]
}
### 3. 部署两个 Worker
bash
# 先部署 Tail Worker
cd tail-worker
wrangler deploy
# 然后部署生产者 Worker
cd ../producer-worker
wrangler deploy
## Wrangler 配置
### 单个尾部消费者
c
{
"name": "producer-worker",
"tail_consumers": [
{
"service": "logging-tail-worker"
}
]
}
### 多个尾部消费者
c
{
"name": "producer-worker",
"tail_consumers": [
{
"service": "logging-tail-worker"
},
{
"service": "metrics-tail-worker"
}
]
}
**注意:** 每个消费者都会独立接收所有事件。
### 移除尾部消费者
c
{
"tail_consumers": []
}
然后重新部署生产者 Worker。
## 环境变量
Tail Workers 使用与常规 Worker 相同的绑定语法:
c
{
"name": "my-tail-worker",
"vars": {
"LOG_ENDPOINT": "https://logs.example.com/ingest"
},
"kv_namespaces": [
{
"binding": "LOGS_KV",
"id": "abc123..."
}
]
}
## 测试与开发
### 本地测试
**Tail Workers 无法通过 `wrangler dev` 进行全面测试。** 请部署到预发布环境进行测试。
### 测试策略
1. 将生产者 Worker 部署到预发布环境
2. 将 Tail Worker 部署到预发布环境
3. 在生产者中配置 `tail_consumers`
4. 触发生产者 Worker 请求
5. 验证 Tail Worker 是否接收到事件(检查目标日志/存储)
### Wrangler Tail 命令
bash
# 将日志流式传输到终端 (并非 Tail Workers)
wrangler tail my-producer-worker
**这与 Tail Workers 不同:**
- `wrangler tail` 将日志流式传输到您的终端
- Tail Workers 是以编程方式处理事件的 Worker
## 部署检查清单
- [ ] Tail Worker 具有 `tail()` 处理器
- [ ] Tail Worker 在生产者之前部署
- [ ] 生产者的 `wrangler.jsonc` 具有正确的 `tail_consumers`
- [ ] 环境变量已配置
- [ ] 已在预发布环境测试
- [ ] 已为 Tail Worker 配置监控