全部產品
Search
文件中心

ApsaraMQ for RocketMQ:優先順序訊息

更新時間:May 19, 2026

優先順序訊息為雲訊息佇列 RocketMQ 版中的進階特性訊息,本文為您介紹優先順序訊息的應用情境、功能原理、使用限制和使用建議。

版本要求

  • 執行個體版本:5.0-rmq-20260304-1 及以上版本。

  • 用戶端 gRPC SDK版本:

    • Java SDK:5.2.0及以上版本。

    • 其它語言 SDK:待發布。

應用情境

在分布式系統中,算力、介面配額等資源通常有限。當大量不同重要程度的訊息並發湧入時,系統需要識別並優先處理核心業務請求。優先順序訊息允許生產者在發送訊息時為其指定優先順序,確保高優先順序任務在系統擁塞時被優先消費處理。

AI 算力資源調度與分配

在 AI 業務情境中,算力資源(GPU/NPU)極其稀缺且調度成本高。您可以通過優先順序訊息實現對波動不穩定請求流的平滑調度:

  • 按任務類型區分優先順序:核心業務(如電商即時推薦)的優先順序高於實驗性模型;線上推理任務(使用者即時請求)的優先順序高於離線訓練任務。

  • 按資源規模匹配優先順序:小批量快速驗證任務可設定為高優先順序,以快速釋放資源;大規模預訓練任務則根據緊急程度相應降級。

  • 按時間敏感性設定優先權:具有嚴格截止時間的任務(如自動駕駛模型即時更新)應設定為最高優先順序。

介面限流情境

部分第三方服務提供者按帳號層級對介面進行統一限流。當多條業務線的訊息(如訂單處理、狀態同步、日誌記錄)共用同一消費隊列時,您可以通過設定優先權,確保訂單相關訊息被優先處理,避免使用者在支付或開通環節產生長時間等待,從而提升核心業務的處理成功率。

營運推送

在社交或店鋪等資源管理平台中,當需要向大量群組推送訊息時,您可以根據推送內容的即時性要求設定不同優先順序。例如,將客服與客戶的即時溝通訊息設定為高優先順序,營銷類和通知類訊息設定為低優先順序,以滿足不同的時效性要求。

功能原理

優先順序訊息是指生產者在發送訊息時,為訊息設定一個優先順序數值。在訊息堆積時,雲訊息佇列 RocketMQ 版會儘可能按照優先順序由高到低的順序將訊息投遞給消費者。

其工作流程如下:

  1. 生產者在發送訊息前,通過訊息屬性設定優先權,例如 message.setPriority(int level)

  2. 訊息儲存時,系統根據訊息的優先順序將其寫入優先順序 Topic 下的不同隊列,每個隊列對應一個優先順序。

  3. 消費者從某個 Broker 擷取訊息時,優先從高優先順序隊列拉取訊息進行消費。

訊息優先順序在單個 Broker 節點內嚴格有序,高優先順序訊息始終優先被消費。跨 Broker 節點不保證全域優先順序排序。在分布式部署情境下,各 Broker 由不同消費者並行拉取,整體消費效果為"儘可能優先處理高優先順序訊息"。

使用限制

  • 優先順序範圍:預設訊息優先順序可設定為 0至9 的整數,數值越大,優先順序越高。

  • Topic 級限制:每一個 Topic 可以單獨設定允許的最大優先順序(預設為 9)。如果需要修改 Topic 的優先順序上限,需通過提交工單或聯絡管理員進行配置。

使用建議

適當調小PushConsumer的maxCacheMessageCount值

本機快取隊列的訊息是不按照優先順序排序的,減少PushConsumer的本機快取隊列中的訊息量可盡量讓未處理的訊息按照優先順序排序。

使用並發投遞的ConsumerGroup消費優先順序隊列

由於優先順序消費要求打破訊息的發送順序,因此它與順序訊息模式互斥。在消費優先順序訊息時,須將 ConsumerGroup 的 deliveryOrderType 配置為 Concurrently(並發投遞)。