全部產品
Search
文件中心

ApsaraMQ for RocketMQ:使用說明

更新時間:Jun 08, 2026

本文為您介紹Global Replicator的操作指導、頁面相關屬性介紹以及常見問題,以協助您快速瞭解使用相關功能。

前提條件

已建立雲訊息佇列 RocketMQ 版執行個體。版本要求:

  • 雲訊息佇列 RocketMQ 版4.0系列執行個體。

    說明

    4.0系列執行個體標準版僅支援單向同步。

  • 雲訊息佇列 RocketMQ 版5.0系列執行個體。

本文以源叢集和目的地組群均為雲訊息佇列 RocketMQ 版5.0系列執行個體為例進行說明。

計算規格選擇建議

在使用Global Replicator時,配置完成Topic映射關係後,訊息同步將對執行個體產生額外的TPS開銷,因此需要考慮同步任務源及目標RocketMQ執行個體的收發TPS峰值上限。

建議規格說明:

例如,在未同步的情況下,雲訊息佇列 RocketMQ 版執行個體的發送TPS峰值為10000(次/秒),接收TPS峰值為10000(次/秒)。

建議源執行個體和目標執行個體的TPS配置如下:

任務類型

源執行個體

目標執行個體

收發TPS峰值上限(次/秒)

發送TPS峰值(次/秒)

接收TPS峰值(次/秒)

收發TPS峰值上限(次/秒)

發送TPS峰值(次/秒)

接收TPS峰值(次/秒)

單向同步

30000

10000

20000

20000

10000

10000

雙向同步

40000

20000

20000

40000

20000

20000

說明
  • 執行個體的收發TPS峰值上限可以在实例详情頁面查看,不同規格執行個體的TPS峰值上限,請參見執行個體規格

  • 目標執行個體接收TPS峰值可根據業務需要的處理速度進行調整。

建立Global Replicator任務

說明

首次使用Global Replicator時,會彈出阿里雲服務授權 - RocketMQ Global Replicator的對話方塊,單擊確認後將自動建立目標服務的關聯角色AliyunServiceRoleForRMQDisasterRecovery,以便在雲訊息佇列 RocketMQ 版中實現Global Replicator功能。更多資訊,請參見服務關聯角色

步驟一:建立任務

  1. 登入雲訊息佇列 RocketMQ 版控制台
  2. 在左側導覽列,單擊Global Replicator,然後單擊建立任務

  3. 建立任務頁面,填寫以下資訊,主要配置如下,其餘可按需配置,然後單擊建立

    在頁面頂部,任務名稱填寫為rocket-test任務類型選擇單向備份:源叢集向目的地組群同步資料任務描述按需填寫。源叢集和目的地組群分左右兩欄配置,中間以箭頭表示同步方向。

    源叢集與目的地組群的不同叢集類型配置,請參見下表:

    訊息佇列 RocketMQ 版

    配置項

    說明

    配置樣本

    版本

    選擇雲訊息佇列 RocketMQ 版執行個體版本。

    • 4.0系列執行個體

    • 5.0系列執行個體

    5.0系列執行個體

    地域

    選擇雲訊息佇列 RocketMQ 版執行個體的地區。

    華東1(杭州)

    实例

    選擇雲訊息佇列 RocketMQ 版執行個體。

    rmq-cn-778***

    認證模式

    • 無需配置

    • ACL身份識別

    ACL身份識別

    使用者名稱

    選擇使用者名稱。

    yS8x01****

    安全性群組 ID

    雲訊息佇列 RocketMQ 版執行個體所在ECS服務中的安全性群組。版本為5.0系列執行個體時配置。

    • 入方向:無要求

    • 出方向:

      • 授權策略:允許

      • 協議:自訂TCP

      • 訪問目的:網段包含叢集交換器的所有網段;連接埠包含8080和8081。

    sg-2ze4jlbqy2s40pc4****

    過濾條件系統配置

    (可選)支援向訊息中添加自訂屬性(UserProperty),消費者可基於SQL92文法訂閱策略實現訊息過濾。

    • Key:UserProperty的Key名

    • 源叢集Value:來自源叢集的訊息添加的UserProperty的Value值

    • 目的地組群Value:來自目的地組群的訊息添加的UserProperty的Value值

    SQL92訂閱過濾樣本如下:

    String sqlStr = "{Key} IS NOT NULL AND {Key} = {源/目的地組群Value}";
    consumer.subscribe(MqConfig.TOPIC, 
        MessageSelector.bySql(sqlStr));

    Apache RocketMQ

    配置項

    說明

    配置樣本

    存取點

    存取點格式為{網域名稱/IP}:{連接埠號碼}

    XX.XX.XX.XX:8080

    認證模式

    • 無需配置

    • ACL身份識別

    ACL身份識別

    使用者名稱

    根據業務自行填寫。

    yS8x01****

    密碼

    根據業務自行填寫。

    F17R4to****

    網路設定

    • 公網

    • VPC網路

    公網

    地域

    網路設定為VPC網路時配置。選擇Apache RocketMQ所在ECS服務中的地區。

    華東1(杭州)

    VPC 網路

    網路設定為VPC網路時配置。Apache RocketMQ所在ECS服務中的實際VPC。

    vpc-bp17fapfdj0dwzjkd****

    交换机

    網路設定為VPC網路時配置。Apache RocketMQ所在ECS服務中的實際交換器。

    vsw-bp1gbjhj53hdjdkg****

    安全性群組 ID

    網路設定為VPC網路時配置。Apache RocketMQ所在ECS服務中的實際安全性群組。

    • 入方向:無要求

    • 出方向:

      • 授權策略:允許

      • 協議:自訂TCP

      • 訪問目的:網段包含所有Apache RocketMQ節點所在的網段;連接埠號碼包含所有Apache RocketMQ節點服務的連接埠號碼,預設連接埠號碼包含9876、10911和10909(如果修改了nameserver,broker的連接埠,需設定修改後的連接埠)。

    sg-2ze4jlbqy2s40pc4****

    過濾條件系統配置

    (可選)支援向訊息中添加自訂屬性(UserProperty),消費者可基於SQL92文法訂閱策略實現訊息過濾。

    • Key:UserProperty的Key名

    • 源叢集Value:來自源叢集的訊息添加的UserProperty的Value值

    • 目的地組群Value:來自目的地組群的訊息添加的UserProperty的Value值

    SQL92訂閱過濾樣本如下:

    String sqlStr = "{Key} IS NOT NULL AND {Key} = {源/目的地組群Value}";
    consumer.subscribe(MqConfig.TOPIC, 
        MessageSelector.bySql(sqlStr));

步驟二:配置Topic映射關係

  1. 任務基本資料頁面,單擊左側導覽列的訊息同步任務

  2. 單擊批量映射或者添加映射,在彈出的對話方塊中配置需要同步的Topic映射關係。

    • 批量映射:配置並勾選所需的Topic映射,然後單擊確定

    • 添加映射:配置所需的Topic映射,然後單擊確定

    說明
    • 若源叢集類型為Apache RocketMQ,則需要填寫一個用於同步訊息的Group,避免使用正常業務的Group。

    • 完成配置Topic映射關係後,訊息才會開始同步。

步驟三:(可選)開啟消費進度同步

開啟消費進度同步後,可以將Group消費Topic的當前消費進度同步到目的地組群。詳情請參見消費進度同步

消費端說明

例如,我們配置源叢集為上海雲訊息佇列 RocketMQ 版執行個體與目的地組群杭州雲訊息佇列 RocketMQ 版執行個體雙向同步的任務。過濾條件的Key設定為Region,源叢集Value設定為Shanghai,目的地組群Value設定為Hangzhou。

上海消費端正常情況下僅消費上海地區的資料,不消費杭州資料,所以採用單個自訂屬性匹配即可。具體請參見事件模式

  • 訂閱訊息,根據單個自訂屬性匹配訊息。

String topic = "topic";
//只訂閱本地區的訊息。
FilterExpression filterExpression = new FilterExpression("Region IS NOT NULL", FilterExpressionType.SQL92);
//因為本地生產應用在發送訊息時並沒有在訊息中設定UserProperty的Key為Region的值,所以Key為Region的自訂屬性為NULL
simpleConsumer.subscribe(topic, filterExpression);
  • 訂閱訊息,匹配Topic中的所有訊息,不進行過濾。

String topic = "topic";
//訂閱所有訊息。
FilterExpression filterExpression = new FilterExpression("True", FilterExpressionType.SQL92);
simpleConsumer.subscribe(topic, filterExpression);

常見問題

三個執行個體是否可以互相同步?

可以,Global Replicator的配置是兩個執行個體間的任務配置,三個執行個體間需要配置三個任務,可以保障每個執行個體都具備全量資料。

構建雙向同步的執行個體,是否還可以使用TAG過濾?

TAG和SQL過濾方式僅能選擇一種。因消費應用需要採用SQL過濾的方式過濾資料,所以建議需要採用TAG過濾的執行個體統一採用SQL過濾的方式進行訊息過濾。具體請參見訊息過濾

是否支援已經存在的單向同步任務變更為雙向同步任務?

如果源叢集和目的地組群均為雲訊息佇列 RocketMQ 版執行個體,支援變更,且不影響存量單向任務的運行。如果有一個叢集為Apache RocketMQ開源叢集,暫時不支援由單向同步變更為雙向同步,您可能需要刪除任務並重新建立。

Global Replicator如何收費?

Global Replicator的同步通道依賴事件匯流排EventBridge產品,EventBridge的費用請參見計費說明。Global Replicator同步訊息資料會佔用雲訊息佇列 RocketMQ 版源執行個體的讀效能,目標執行個體的寫效能,您需要額外評估雲訊息佇列 RocketMQ 版的計算規格。

Global Replicator認證模式配置ACL後,為什麼沒有收到同步的訊息?

Global Replicator配置同步任務後,您需要配置需要同步的Topic,系統會對應每一個Topic任務產生系統Group用於訊息資料同步,該Group不可被刪除,僅當刪除任務時,系統會將對應的Group刪除。如果您開啟了ACL的認證模式,需要對選擇的ACL使用者佈建Topic寫入、讀取許可權和Group讀取許可權。您可在執行個體的访问控制選中該使用者,通過資源名設定萬用字元“*” 賦予該帳號全量許可權,以降低配置工作量。

Global Replicator任務暫停再恢複,訊息資料可以繼續同步嗎?

可以,暫停再恢複後,Global Replicator任務會從latest acked offset的下一條資料繼續同步。但注意不要超過雲訊息佇列 RocketMQ 版訊息儲存時間。