后台任务

后台任务

生成器支持 Inngest 和 Cloudflare Workflows。业务代码通过 jobService 发送任务, 供应商实现负责事件格式和运行环境。

Inngest

适用于 Server、Docker 和 Vercel:

配置作用
INNGEST_EVENT_KEY生产环境发送事件
INNGEST_SIGNING_KEY校验 /api/inngest 请求
src/adapters/jobs/inngestClient、handler 和 function 实现
src/app/api/inngest/route.tsInngest 回调入口

本地需要查看或触发 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

本页目录