Skip to content
所有標籤

#background-jobs

7 篇文章

AWS SQS 與 SNS:一個保存工作,一個把事件 fan-out

SQS 是 pull-based durable queue,SNS 是 push-based topic;常見可靠 fan-out 是 SNS topic 接多個 SQS queue,而不是讓多個 worker 共讀一條 queue。

Cloudflare Queues:把 Workers request 拆成可重試、可批次的背景工作

Cloudflare Queues 是 Workers 旁邊的 message queue:producer 把慢工作寫進 queue,consumer 用批次、ack/retry、delay 與 DLQ 處理失敗。它適合單步背景工作;流程需要記住多步驟狀態時,下一篇要看 Workflows。

Inngest:用 step 把 serverless function 變成可恢復的工作流

Inngest 讓一般 TypeScript、Python、Go function 以 step 為持久化邊界;失敗時函式從頭執行,但已完成 step 由紀錄回填,不再重做 side effect。

RabbitMQ:先用 exchange 表達路由,再用 quorum queue 保住工作

RabbitMQ 的強項是 exchange、binding 與 queue 組成的訊息路由;需要高可用時以 quorum queue 為預設,並同時啟用 publisher confirm、manual ack 與冪等 consumer。

Redis Streams:用 append-only log 與 consumer group 補上 Redis 的可靠訊息層

Redis Streams 以 `XADD` 保存可回讀 entry,consumer group 再用 Pending Entries List 與 `XACK` 追蹤處理;它比 Pub/Sub 可靠,但不是自動變成 Kafka。

Trigger.dev:用行程快照做持久任務,不要求你的程式碼有決定性

Trigger.dev 是 Apache 2.0 的持久任務平台(v4.5.12,2026-08 實查),用 CRIU 對整個 Node.js 行程做記憶體快照來暫停與復原。跟 Temporal 的 replay 模型不同,它不重跑你的編排碼、不要求決定性——LLM 呼叫直接寫在 task 裡就行。代價是快照無法保留 TCP 連線,還原後要自己重建;而且快照是 cloud-only,自架拿不到。

tech guide

BullMQ:Node.js 最成熟的 Redis-backed 任務佇列

BullMQ 是 Node.js 生態裡最成熟的任務佇列,底層用 Redis,支援優先級、重試、排程、延遲任務。島島用它處理通知發送和實踐自動完成排程。