Prisma 和 Inngest 结合在一起,展示了如何轻松创建实时的、持久的和可扩展的工作流。
如今构建 Web 应用程序不仅仅关乎功能,更关乎为用户创造魔力。
开发现代 Web 应用程序变得越来越难,因为用户已经期望他们的体验是美观、愉悦和即时的,同时建立在实时的、丰富且不断增长的数据集之上。
为了让开发者更容易做到这一点,我们在 Prisma 与 Inngest 团队一拍即合。
Prisma Pulse 的构建旨在让开发者能够对来自 Postgres 数据库的实时数据库更改做出响应。Inngest 的构建旨在让开发者能够创建强大而持久的后台作业和工作流——任何出色应用程序的支柱。
在本文中,我们将演示如何结合使用 Prisma Pulse 和 Inngest 构建强大的、可扩展的、实时的工作流。
将 Inngest 与 Prisma Pulse 结合使用
让我们用一个简单的示例来演示——您可以在午休时在自己的应用程序中实现的功能:新用户注册后的入职。
假设您有一个名为 User
的数据库表,每当有用户注册时,该表就会获得一个新行。然后,我们应该向他们发送一封欢迎电子邮件,并在三天后安排另一封电子邮件。
为了实现此入职流程,首先,您只需几行代码即可开始将数据库更改流式传输到您的应用程序,以便在新用户创建时做出反应
注意:此示例假设您已安装了 Pulse 扩展,并使用它实例化了您的 Prisma 客户端。
接下来,我们可以通过扩展上面的代码以使用 Inngest 客户端提交事件来轻松触发 Inngest 中的工作流
为了对该事件采取行动,我们还需要一个函数来处理它。在您项目的其他地方,您将创建一个函数来响应那个事件
使用 Inngest 步骤 和 休眠,我们可以创建一个优雅的工作流,在数天和数周内有更多的接触点,以培养您的新用户激活。
这是一个稍微扩展的示例,我们可以在其中创建一个跨越多天的欢迎序列。
现在我们有了一个完全可自定义、可扩展的用户入职电子邮件序列!您可以以此为基础添加其他入职操作,或添加自定义逻辑。检查用户是否尝试过某个功能,然后根据他们做过或没做过的事情自定义电子邮件怎么样?您可以发挥您的想象力,尝试不同的流程。
借助 Pulse 的交付保证,即使您的服务器宕机或遇到轻微中断,Prisma 也将确保所有事件至少交付一次——您的服务器可以在恢复后简单地从中断处继续。因此,没有用户会错过入职,并且您的工作流将从始至终完全持久。
Prisma Pulse + Inngest 实践:构建 AI 写作工作流
现在让我们探索另一个以 AI 工作流为特色的示例 ✨
假设我们正在构建一个尖端的 CMS,提供一个 AI 写作助手,该助手可以审查文章并提供建议。
我们的 CMS 编辑器 UI 已经链接到下面的 Prisma 模式
这次,我们不从头开始设置 Prisma Pulse,而是可以利用我们创建的 Pulse/Inngest 路由器服务,以帮助您在几分钟内在生产环境中启动并运行。它使用 Prisma Pulse 流式传输数据库更改,并将事件发送给您 Inngest。
您可以直接 从 GitHub 克隆它,或者通过运行以下命令在几秒钟内设置它
注意:如果您想尝试一下,只需按照 README 中的说明进行操作,以获得有关设置和部署您自己的服务的帮助。
上面的 Pulse Inngest 路由器会将 Prisma Pulse 事件转换为 Inngest 事件,从而触发下面 Inngest 函数,该函数监听 "db/article.update"
触发器
注意:我们使用 Inngest 的 依赖注入 注入了 openai
客户端,这使其可以直接在函数体中使用。
我们现在可以通过编写我们的第一个“生成建议”和“保存建议”步骤来实现我们的 AI 写作工作流
Inngest 的 step.run()
使我们能够在工作流中创建一个检查点,以便在发生错误(例如,网络问题或 OpenAI 错误)时重试。未能保存建议不会重试 OpenAI 步骤,因为 Inngest 保留了先前步骤的结果。
为了增加一些安全性,我们还可以添加一些 节流 配置,以防止 OpenAI 的 API 速率限制 出现任何问题,并确保我们的工作流每分钟最多运行 10 次。
现在 AI 部分的工作流已完成,让我们添加一个步骤来等待我们的文章移动到 PUBLISH
状态,然后再发送 Slack 通知。为了实现这一点,让我们使用 Inngest 的 “等待事件”功能,该功能允许暂停工作流,直到给定事件到达(当文章草稿从应用程序更新为 PUBLISH
状态时,Prisma Pulse 将自动发送该事件)
注意:暂停的 Inngest 工作流不消耗计算或节流容量。
现在,您拥有一个 AI 驱动的审查系统,该系统直接与您现有的 CMS 集成,实时触发,完全可扩展且持久。
可能性是无限的。将 Inngest 的灵活性和强大功能与 Prisma Pulse 的实时触发器相结合,为您提供了构建令人难以置信的流程的工具,从而支持卓越的用户体验。
从快速交付 2FA 代码之类的简单时刻,到创建动态和个性化的入职体验之类的深入而复杂的时刻——您现在拥有了让您的用户更加愉悦的工具。
想要更多想法?当您的数据库更新时,触发 ETL 工作流(使用 事件批处理)怎么样?或者通过使用 Pulse 连接到数据库,向现有产品添加审批流程。
加入对话:您会使用 Pulse 和 Inngest 构建什么?
有用的资源
不要错过下一篇文章!
注册 Prisma 新闻通讯