后台任务

后台任务

后台任务使用 Inngest。适合处理不应该阻塞请求的流程,例如积分过期、投递重试、邮件批处理、异步产品任务等。

主要文件

路径作用
src/inngest/client.tsInngest client
src/inngest/functions.tsfunction 定义
src/inngest/index.tsexports
src/app/api/inngest/route.tsInngest route handler
src/app/api/jobs/credits/expire/route.ts积分过期 job endpoint
src/test/jobs/cron-expire.test.tsjob 测试

本地开发

先启动应用:

pnpm dev

如果需要本地检查或触发 function,再使用 Inngest dev server。

生产环境变量

变量作用
INNGEST_EVENT_KEY向 Inngest 发送事件
INNGEST_SIGNING_KEY校验 Inngest 请求

Job 设计规则

  • job 必须尽量幂等。
  • 保存足够状态,方便 retry 后恢复。
  • 不要因为重复 webhook 或重复事件重复发积分。
  • 优先拆成小的可组合函数。
  • 日志里记录 job id 和外部事件 id。

测试

修改过期逻辑后运行:

pnpm test:run src/test/jobs

本页目录