Message Queues 概覽

常見的 Message Queue 系統:

  • RabbitMQ
  • Kafka
  • NATS / JetStream

佇列類型

MQ Types

Simple FIFO Queue

First In First Out(先進先出)。

一個新元素會被插入到隊列的尾部,並從隊列的頭部移除元素。如果我們希望在接收到付款回應時發送電子郵件通知用戶,可以使用 FIFO 隊列。電子郵件將按照付款回應的順序依次發送。

Circular Queue

也稱為 Circular Buffer 或 Ring Buffer。

範例:Java - Log4j

它的最後一個元素連接到第一個元素。插入操作發生在隊列的前端,而刪除操作則在隊列的末端。一個著名的實現是 LMAX 的低延遲環形緩衝區。交易組件通過環形緩衝區進行通信,這是內存中的實現,速度非常快。

Priority Queue

元素具有預定義的優先級。

我們從隊列中取出最高(或最低)優先級的元素。在底層實現中,通常使用最大堆或最小堆,其中具有最高或最低優先級的元素位於堆(Heap)的根部。

Deque

也稱為 Double-ended Queue(雙端佇列)。

插入和刪除操作可以同時在隊列的頭部和尾部進行,同時支持 FIFO 和 LIFO(後進先出)。