全部產品
Search
文件中心

ApsaraMQ for RabbitMQ:Queue管理

更新時間:Jul 10, 2026

Queue是指訊息佇列,雲訊息佇列 RabbitMQ 版的訊息都會被投入到一個或多個Queue中。本文介紹如何在雲訊息佇列 RabbitMQ 版控制台建立訊息的儲存資源Queue、查看Dashboard大盤、被Exchange綁定、向指定Queue發送訊息、查看Consumer Tag、清空Queue和刪除Queue。

背景資訊

Consumer Tag是Consumer用戶端的標識符。您可以在雲訊息佇列 RabbitMQ 版的Consumer用戶端設定Consumer Tag。如果您沒有在雲訊息佇列 RabbitMQ 版的Consumer用戶端設定Consumer Tag,雲訊息佇列 RabbitMQ 版服務端會為您自動產生一個唯一的Consumer Tag。建議使用系統預設Consumer Tag,不自訂設定Consumer Tag。

重要
  • Consumer Tag必須保持唯一,即已被某個Consumer使用的Consumer Tag不可同時被另一個Consumer使用。

  • 用戶端使用的SDK在記錄串連上有哪些消費者時,採用Map<String, Consumer>進行記錄,其中Key為Consumer Tag。如果一個串連上存在多個消費者具有相同的Consumer Tag,在串連自動重連後,該串連下的相同Consumer Tag僅會有一個消費者恢複消費,其他消費者將不會自動回復。

建立Queue

  1. 登入雲訊息佇列 RabbitMQ 版控制台,然後在左側導覽列選擇实例列表

  2. 实例列表頁面的頂部功能表列選擇地區,然後在執行個體列表中,單擊目標執行個體名稱。

  3. 在左側導覽列,單擊Queue 列表

  4. Queue 列表頁面,在当前 Vhost右側的切换下拉式清單中,選擇Vhost,單擊创建 Queue

  5. 创建 Queue面板,配置以下參數,然後單擊确定

    參數

    描述

    說明

    Queue 名称

    Queue的名稱

    • 只能包含字母、數字、短劃線(-)、底線(_)、半形句號(.)、井號(#)、正斜線(/)、at符號(@)。

    • 長度限制在1~255字元。

    • 建立後無法修改,只能刪除重建。

    • 以amq.開頭的為保留欄位,因此不能使用。例如:amq.test。

    Auto Delete

    最後一個Consumer取消訂閱後,Queue是否自動刪除。

    • true:在訂閱該Queue訊息的最後一個Consumer取消訂閱該Queue的訊息後,自動刪除該Queue。

    • false:在訂閱該Queue訊息的最後一個Consumer取消訂閱該Queue的訊息後,不自動刪除該Queue。

    重试策略

    配置Queue重試策略。各執行個體策略參數取值,請參見執行個體重試策略參數說明

    • 是否繼承執行個體配置

      • :繼承執行個體預設配置。

      • :自訂配置。

    • 最大投遞次數:系統將一條訊息嘗試投遞給消費者的最大次數限制。單位:次。

    • 消費逾時時間:消費者在接收和處理訊息時允許的最大時間限制。單位:秒。

    死信策略

    Queue的參數設定,可用於設定死信Exchange、死信Routing Key和訊息存活時間。

    • DeadLetterExchange:指定死信訊息發送的目標Exchange。

    • DeadLetterRoutingKey:指定死信訊息的Routing Key,即死信Exchange會將訊息發送至匹配該死信Routing Key所對應的Queue。

    • MessageTTL:訊息存活時間,單位毫秒(ms)。在指定時間內未被成功消費的訊息會變成死信訊息,該訊息將會被發送到死信Exchange。更多資訊,請參見訊息存活時間

常見問題

能否指定特定用戶端消費訊息?

目前不支援指定特定用戶端消費訊息。訊息分發遵循 RabbitMQ 標準機制,按輪詢(Round-Robin)或優先順序(Priority)策略在各 Consumer 用戶端間分配,無法將訊息固定發送給特定用戶端。

如何通過代碼建立順序隊列(x-single-active-consumer)?

控制台暫不支援配置 x-single-active-consumer 參數,需通過 SDK 代碼建立順序隊列。建立時,使用 channel.queueDeclare 方法,並在 arguments 參數中設定 "x-single-active-consumer": true。樣本如下:

Map<String, Object> arguments = new HashMap<>();
arguments.put("x-single-active-consumer", true);
channel.queueDeclare("your-queue-name", true, false, false, arguments);

為什麼代碼自動建立隊列失敗(Failed to declare queue)?

雲訊息佇列 RabbitMQ 版不支援通過代碼自動建立隊列(Auto-create)。使用隊列前,必須先在控制台或通過 API 手動建立 Queue,再在代碼中使用 channel.queueDeclare 綁定已有的 Queue,否則將報錯 Failed to declare queue。

Queue 最大限制個數調整

如果執行個體可建立的 Queue 數量已達到上限,可根據執行個體類型通過以下方式調整:

  • 企业版专业版铂金版執行個體:在執行個體詳情頁或執行個體列表的操作區,單擊升配,前往購買頁面完成升配。

  • (共享)按累积量(共享)预留+弹性(独享)预留+弹性執行個體:在執行個體詳情頁右上方,單擊修改配额,調整 Queue 數量上限。

各執行個體類型可支援的 Queue 數量上限,請參見使用限制中、叢集限制下的「單一實例可建立的 Queue 數量」。

查看統計資料

您可以查看各種指標資料,協助您及時發現和定位問題。

  1. Queue 列表頁面,選擇指定Queue,在其操作列單擊详情

  2. Queue 详情頁面單擊监控指标Dashboard頁簽。

    執行個體類型不同,統計資料不同。具體如下:

    • 企業版和鉑金版:支援查看基於阿里雲ARMS Prometheus監控服務和Grafana的指標資訊。關於Dashboard詳細資料和指標資訊,請參見Dashboard

    • 普通版/專業版:通過CloudMonitor提供指標監控資料。關於CloudMonitor的詳細資料和指標資訊,請參見監控指標

      說明

      雲訊息佇列 RabbitMQ 版不再支援開通新的普通版執行個體,此處指存量的普通版執行個體。

查看Consumer Tag

重要

雲訊息佇列 RabbitMQ 版僅支援查看線上Consumer用戶端的Consumer Tag,不支援查看離線Consumer用戶端的Consumer Tag,您需要確保要查看Consumer Tag的Consumer用戶端處於線上狀態。

Queue 列表頁面,選擇指定Queue,在其操作列,選擇更多 > Consumer Tag 列表

被Exchange綁定

  1. Queue 列表頁面,選擇指定Queue,在其操作列單擊详情

  2. Queue 详情頁面單擊被绑定信息頁簽,單擊添加被绑定

  3. 添加被绑定面板,選擇源Exchange,在Routing Key文字框輸入Routing Key,然後單擊确定

    說明

    若被綁定的Exchange的類型為x-consistent-hash時,Routing Key表示綁定的Queue的權重,只能設定為整數,取值範圍為[1~20]。

發送訊息

Queue添加被綁定關係後,可直接在控制台發送訊息,將訊息從源Exchange發送到指定的Queue中。

  1. Queue 列表頁面,選擇指定Queue,在其操作列單擊详情

  2. Queue 详情頁面,選擇被绑定信息頁簽。

  3. 在被綁定關係列表中,選擇指定的綁定關係,在其操作列單擊发送消息

  4. 在彈出的发送消息面板中輸入messageIdmessageBody,然後單擊确定

重要

當使用預設 Exchange(exchange 為空白)發送訊息時,Routing Key 必須與已存在的 Queue 名稱完全一致;同時,用戶端帳號需擁有對該 Queue 的寫入權限。若 Queue 不存在或許可權不足,訊息將被丟棄,且控制台無發送記錄。

清空Queue

Queue 列表頁面,選擇指定Queue,在其操作列,選擇更多 > 清空消息

刪除Queue

警告

刪除Queue時,Queue中未被消費的訊息會被同時刪除,且不可恢複。請您謹慎操作。

  1. Queue 列表頁面,根據需要選擇如下任意一種方式刪除Queue。

    • 刪除單個Queue:找到要刪除的Queue,在其右側操作列,選擇更多 > 删除

      您也可以單擊目標Queue,或在其右側操作列,單擊详情,在Queue 详情頁面右上方單擊删除

    • 刪除多個Queue:選中要刪除的Queue,單擊Queue列表下方的批量删除

  2. 提示對話方塊,認真閱讀提示資訊,單擊確認