2024 年 9 月 2 日

使用 Pulse 和 Inngest 建立即時、持久的工作流程

Prisma 和 Inngest 結合在一起,展示如何輕鬆建立即時、持久且可擴展的工作流程。

Prisma Pulse and Inngest: Build real-time, durable workflows

現今建置 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 結構描述

這次,我們可以使用我們建立的 Pulse/Inngest 路由器服務,而不是從頭開始設定 Prisma Pulse,以協助您在幾分鐘內開始在生產環境中使用。它使用 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 工作流程不會消耗運算或節流容量。

現在,您擁有一個直接與現有 CMS 整合的 AI 驅動審閱系統,該系統是即時觸發、完全可擴展且持久的。

可能性是無窮的。將 Inngest 的彈性和強大功能與 Prisma Pulse 的即時觸發器結合在一起,您將擁有建置令人難以置信的流程的工具,從而支援令人驚嘆的使用者體驗。

從快速交付 2FA 程式碼等簡單時刻,到建立動態且個人化的入門引導體驗等深入且複雜的時刻,您現在擁有讓使用者更加愉悅的工具。

想要更多想法嗎?當您的資料庫更新時,觸發 ETL 工作流程(使用事件批次處理)如何?或透過使用 Pulse 連接到資料庫,將核准流程新增到現有產品。

加入對話:您會使用 Pulse 和 Inngest 建置什麼?

實用資源

不要錯過下一篇文章!

訂閱 Prisma 電子報