1. 程式人生 > >分散式訊息佇列 RocketMQ 原始碼分析 —— Message 順序傳送與消費

分散式訊息佇列 RocketMQ 原始碼分析 —— Message 順序傳送與消費

本文主要基於 RocketMQ 4.0.x 正式版

1. 概述

建議前置閱讀內容:

當然對 Message 傳送與消費已經有一定了解的同學,可以選擇跳過。

RocketMQ 提供了兩種順序級別:

  • 普通順序訊息 :Producer 將相關聯的訊息傳送到相同的訊息佇列。
  • 完全嚴格順序 :在 普通順序訊息 的基礎上,Consumer 嚴格順序消費。

絕大部分場景下只需要用到普通順序訊息
例如說:給使用者傳送簡訊訊息 + 傳送推送訊息,將兩條訊息傳送到不同的訊息佇列,若其中一條訊息佇列消費較慢造成堵塞,使用者可能會收到兩條訊息會存在一定的時間差,帶來的體驗會相對較差。當然類似這種場景,即使有一定的時間差,不會產生系統邏輯上BUG

。另外,普通順序訊息效能能更加好。
那麼什麼時候使用使用完全嚴格順序?如下是來自官方文件的說明:

目前已知的應用只有資料庫 binlog 同步強依賴嚴格順序訊息,其他應用絕大部分都可以容忍短暫亂序,推薦使用普通的順序訊息