Skip to content
所有標籤

#message-queue

6 篇文章

Apache Kafka:不是把訊息排隊,而是保存可重播的事件日誌

Kafka 的核心是依 partition 排序、依 retention 保存的分散式 log;consumer group 用 offset 分工,exactly-once 只在 Kafka transaction 能涵蓋的邊界內成立。

Apache Pulsar:把 stateless broker 與 BookKeeper 儲存拆開的事件平台

Pulsar 將 serving 與 storage 分離:stateless broker 處理連線,BookKeeper 保存 ledger 與 subscription cursor;彈性與多租戶能力換來更多營運元件。

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。

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。