用途:该技能用于掌握 Inngest 的事件设计与投递模式,事件是 Inngest 的基础,可用于设计健壮的事件 schema、实现幂等、使用扇出模式并处理系统事件。内容聚焦 TypeScript,Python 或 Go 需参考 Inngest 官方文档,核心概念跨语言通用。
主要能力:事件负载为 JSON 对象,必填 name(事件类型)与 data(负载),可选 id(去重 ID)、ts(Unix 毫秒时间戳)、v(schema 版本)。命名推荐 Object-Action 模式,如 domain/noun.verb,例如 billing/invoice.paid、user/profile.updated,使用过去时与点号层级,避免含糊或下划线命名。事件 ID 用于防止重复处理,去重窗口为首次接收后 24 小时,ID 应针对事件类型与实例,如 invoice-paid-${invoiceId}。ts 可用于未来调度或维持事件顺序,带时间戳的事件按时间顺序处理。扇出模式让一个事件触发多个独立函数,具备独立性、并行执行、选择性重放与跨服务能力;也可用 step.sendEvent 配合 step.waitForEvent 编排。系统事件包括 inngest/function.failed、inngest/function.finished、inngest/function.cancelled,可用于失败监控、告警与自动重试。
使用方式:通过 new Inngest({ id: "my-app" }) 创建客户端,生产环境需设置 INNGEST_EVENT_KEY 环境变量。用 inngest.send 发送单个或批量事件(批量上限 512kb),返回事件 ID 便于追踪;在函数内应使用 step.sendEvent 而非 inngest.send,以获得可靠性与去重。
适用场景与限制:适合事件驱动工作流、服务解耦、扇出与幂等处理。资料未提供收费、价格、平台支持范围等细节;示例为 TypeScript,其他语言需查阅官方文档。