← 返回項目列表
DevOps 與工具

排程任務與工作流程

從行程內 cron 到可持久執行的 Temporal 工作流程

建立服務初版 · 共同主導遷移至 Temporal · 2024.12 — 2025.09
Go Temporal Kafka gRPC MySQL/GORM

專案背景

發放任務原本跑在行程內 cron 上:沒有重試、看不到哪個租戶失敗,也無法接續執行到一半的任務。

核心技術亮點

01

多幣別的回饋與會員忠誠度獎勵發放,透過 Kafka 以唯一訂單 ID 入帳至錢包

02

Temporal SDK、指數退避重試策略與 worker 註冊機制

03

發放任務重構為父工作流程,為每個租戶扇出一個子工作流程;發布入帳訊息失敗時執行補償步驟

04

每日客戶分群重新分類,activity 具心跳並分頁執行

05

訪客資料清理,以冪等方式建立為 Temporal Schedule

核心實現

1

各租戶的父子工作流程

父工作流程列出所有租戶,為每個租戶啟動一個子工作流程;每個子工作流程以唯一訂單 ID 發放,發布失敗時進行補償。

Why: 單一租戶失敗不再阻擋其他租戶,每個子工作流程也能單獨重試與檢視。

技術決策

技術決策 選擇 替代方案 原因
排程器 Temporal 行程內 cron 加上手寫重試 可持久執行、具退避的重試、心跳,以及每次執行都能在 UI 中查看——不必自己實作。