后台任务
后台任务
生成器支持 Inngest 和 Cloudflare Workflows。业务代码通过 jobService 发送任务,
供应商实现负责事件格式和运行环境。
Inngest
适用于 Server、Docker 和 Vercel:
| 配置 | 作用 |
|---|---|
INNGEST_EVENT_KEY | 生产环境发送事件 |
INNGEST_SIGNING_KEY | 校验 /api/inngest 请求 |
src/adapters/jobs/inngest | Client、handler 和 function 实现 |
src/app/api/inngest/route.ts | Inngest 回调入口 |
本地需要查看或触发 function 时,单独运行 Inngest Dev Server。
Cloudflare Workflows
Cloudflare 目标通过 NEXTDEVTPL_WORKFLOW Binding 调用 Workflow。生成的
wrangler.jsonc 声明 binding、workflow 名和 class。部署前创建资源并检查命名,
运行时由 Worker 上下文延迟注入。
Cron
积分过期接口位于 /api/jobs/credits/expire,由 CRON_SECRET 保护。Vercel 目标
会按选中模块生成 cron 配置;其他平台使用自己的 scheduler 调用该端点。
选择 operations 后,使用相同的
Authorization: Bearer <CRON_SECRET> 请求头配置以下受保护接口:
| 接口 | 作用 | 建议频率 |
|---|---|---|
/api/jobs/operations/snapshot | 保存当天运营驾驶舱快照 | 每天一次 |
/api/jobs/operations/alerts | 评估规则并发送去重通知 | 每 5-15 分钟 |
同一周期重复调用 operations 接口是幂等的。查询或通知失败会被记录,不能让原始 产品请求失败。当前 Vercel 配置只自动生成积分过期 cron,operations 任务需要在 平台控制台单独添加。
编写任务
- 任务需要幂等,重复事件不会重复收费、发积分或发送关键邮件。
- 重试所需状态保存到数据库或工作流状态中。
- 日志记录 job id 和外部事件 id,过滤密钥和用户敏感内容。
- 长任务拆成可重试步骤,外部调用设置超时。
修改后运行:
pnpm test:run -- src/test/jobs
pnpm test:run -- src/test/adapters/cloudflare.test.ts