すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RocketMQ:自己管理型 Apache RocketMQ クラスターの ApsaraMQ for RocketMQ への移行

最終更新日:Mar 12, 2026

自己管理型の Apache RocketMQ クラスターを実行する場合、すべてのブローカーノードのパッチ適用、スケーリング、モニタリング、およびセキュリティ保護はお客様の責任となります。ApsaraMQ for RocketMQ は、フルマネージドのメッセージングサービスを提供することで、このオーバーヘッドを解消します。組み込みの移行ツールは、メタデータを同期し、トピックごとの段階的なスイッチオーバーを通じてトラフィックをルーティングし、すべてのステージでバッチ操作とロールバックをサポートすることで、中断を最小限に抑えながらクラスターを ApsaraMQ for RocketMQ インスタンスに移行します。

前提条件

開始する前に、以下が準備されていることを確認してください。

  • ApsaraMQ for RocketMQ 5.0 インスタンス。「インスタンスの作成」をご参照ください。

  • 次の表で説明する、移行用のサービスリンクロール。「サービスリンクロール」をご参照ください。

    項目
    ロール名AliyunServiceRoleForRMQMigration
    ポリシーAliyunServiceRolePolicyForRMQMigration
    目的移行中に ApsaraMQ for RocketMQ が Virtual Private Cloud (VPC) にアクセスすることを許可します

現在のクラスターの評価

開始する前に、移行元クラスターに互換性があることを確認し、移行範囲を計画してください。

移行元クラスターの要件

移行元の Apache RocketMQ クラスターは、以下の要件を満たす必要があります。満たさない場合は、してください

要件詳細
ブローカーバージョンApache RocketMQ 4.x または 5.x
ネットワークVPC にデプロイされていること。オンプレミスにデプロイされている場合、クラスターは VPC からアクセス可能である必要があります。
リージョン中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (張家口)、米国 (シリコンバレー)、またはシンガポール

宛先インスタンスの制限

パラメーター制限
メッセージサイズ最大 4 MB
メッセージ保持期間最小 24 時間から最大 720 時間
スケジュールされたメッセージの遅延サブスクリプションおよび従量課金の Standard Edition、サーバーレスの Standard および Professional Edition:7 日間。サブスクリプションおよび従量課金の Professional Edition および Enterprise Platinum Edition:40 日間。

完全なリストについては、「クォータと制限」をご参照ください。

SDK の互換性

SDK言語バージョンアップグレードは必要か?
Apache RocketMQ Remoting SDKJava5.xいいえ。ApsaraMQ for RocketMQ と互換性あり。
Apache RocketMQ Remoting SDKJava、C++4.xはい、PullConsumerDefaultLitePullConsumer、または DefaultPullConsumer が使用されている場合。5.x にアップグレードしてください。「SDK の概要」をご参照ください。

Remoting SDK は、以下の Maven 依存関係とエンドポイント形式を使用します。

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>{version}</version>
</dependency>
producer.setNamesrvAddr("xxx:9876");
consumer.setNamesrvAddr("xxx:9876");
説明

スケジュールされたメッセージとリトライメッセージ

移行元クラスターにスケジュールされたメッセージまたはリトライ待ちのメッセージが含まれているかどうかを確認してください。移行後、すべてのプロデューサーとコンシューマーの接続は ApsaraMQ for RocketMQ インスタンスに切り替わります。移行元クラスターに残っているスケジュールされたメッセージやリトライメッセージは消費されない可能性があります。移行元クラスターを廃止する前に、いくつかのコンシューマープロセスを実行し続けてこれらのメッセージを処理してください。

移行バッチの計画

移行ツールは、バッチ操作、カナリアリリース、およびロールバックを伴うトピックごとの移行をサポートしており、各変更の影響範囲を縮小します。

  1. トピックの選択とバッチの計画:移行するトピックを特定し、バッチにグループ化します。重要度の低いビジネストピックから始めます。

  2. 上流および下流チームとの調整:選択したトピックを使用するすべてのプロデューサーおよびコンシューマーアプリケーションに通知します。すべてのアプリケーションはエンドポイントを更新する必要があります。

重要

すべての上流および下流アプリケーションがエンドポイントを更新していることを確認してください。切り替えを行わないアプリケーションは、メッセージ消費の遅延を引き起こす可能性があります。

仕組み

移行は 5 つのステップに従って行われ、各ステップには組み込みの検証チェックとロールバックサポートが含まれています。

Migration process
ステップ発生内容
1. 移行の評価移行元クラスターと宛先インスタンス間のバージョンと機能の互換性を検証します。各バッチで移行するトピックを定義します。
2. ネットワークの構成移行元クラスターのネットワークとノードの詳細を提供します。移行ツールはこれらを使用して、最小権限での接続を介してクラスターのメタデータを読み取ります。
3. メタデータの移行移行元クラスターからトピックとコンシューマーグループを選択し、そのメタデータを宛先インスタンスにインポートします。
4. エンドポイントの変更すべてのプロデューサーおよびコンシューマーアプリケーションのエンドポイントを、移行元クラスターのアドレスから宛先インスタンスのアドレスに更新します。
5. トラフィックの切り替えトピックごとに段階的なトラフィック切り替えを実行し、読み取りおよび書き込みトラフィックを移行元クラスターから宛先インスタンスに移動します。

ネットワークの構成

移行タスクを作成し、移行元の Apache RocketMQ クラスターのネットワーク詳細を提供します。移行ツールはこれらの詳細を使用して、クラスターのメタデータを読み取り、トラフィックの切り替えを管理します。

移行ツールがアクセスするもの

移行ツールは、移行元クラスターから以下の情報にのみアクセスします (最小権限):

  • トピックメタデータ

  • コンシューマーグループメタデータ

  • トピックの動的ルーティング登録

  • コンシューマー接続とメッセージ蓄積状況

このツールは、他のクラスターデータにアクセスしたり、移行元クラスターに設定を書き込んだりすることはありません。

重要

次に進む前にネットワーク構成を検証してください。次のステップに進むと、ネットワーク設定を修正するために戻ることはできません。ネットワーク構成を変更するには、新しい移行タスクを作成する必要があります。

操作手順

  1. ApsaraMQ for RocketMQ コンソールにログインします。

  2. 上部のナビゲーションバーで、移行元クラスターと宛先インスタンスの両方が配置されているリージョンを選択します。左側のナビゲーションウィンドウで、RocketMQ Copilot > クラウドへの移行 を選択します。

  3. クラウドへの移行 ページで、タスクの作成 をクリックします。

  4. 移行タスクの作成 パネルで、次の表で説明するパラメーターを設定し、OK をクリックします。

  5. 移行ウィザードの ネットワーク設定 ステップで、移行元の Apache RocketMQ クラスターのネットワーク詳細を入力し、ネットワークの構成 をクリックします。

  6. ネットワーク構成が完了するのを待ってから、次へ をクリックします。

パラメーターリファレンス

パラメーター説明
クラスタータイプ移行元クラスターのネットワーク環境。インターネット接続クラスター:インターネット経由でデプロイされています。VPC 接続クラスター:Alibaba Cloud VPC にデプロイされています。VPC 接続クラスター
クラスター名移行元クラスターを識別するためのカスタム名。表示目的でのみ使用されます。first
VPC移行元クラスターがデプロイされている VPC ID。VPC 接続クラスター の場合にのみ必須です。vpc-bp1mhd\*\*\*\*\*\*24chrxn
vSwitch移行ツールが移行元クラスターネットワークにアクセスできるようにする vSwitch。移行タスクリージョンでサポートされているゾーンの vSwitch を選択します。「リージョンとゾーン」をご参照ください。利用可能な vSwitch がない場合は、サポートされているゾーンに作成します。「vSwitch の作成と管理」をご参照ください。VPC 接続クラスター の場合にのみ必須です。vsw-bp1hejs\*\*\*\*\*\*0los38rn
セキュリティグループネットワークアクセス用のセキュリティグループ。移行元クラスターを実行している Elastic Compute Service (ECS) インスタンスと同じセキュリティグループを使用します。異なるセキュリティグループを使用する場合は、そのルールが宛先インスタンスへのアクセスを許可していることを確認してください。VPC 接続クラスター の場合にのみ必須です。sg-bp160q\*\*\*\*\*\*vtcxvwl
ネームサーバーアドレス移行元クラスター内のすべてのネームサーバーの IP アドレス。複数のアドレスはカンマ (,) またはセミコロン (;) で区切ります。192.168.XX.XX:9876
アクセス認証情報N/A:アクセス制御リスト (ACL) が有効になっていません。ACL:ACL が有効になっています。管理者認証情報を提供してください。ACL
ユーザー名管理者アカウント名。ACL が有効な場合にのみ必須です。admin
パスワード管理者アカウントのパスワード。ACL が有効な場合にのみ必須です。\*\*\*\*\*\*
重要

すべてのネームサーバーの IP アドレスを指定してください。アドレスが欠落していると、移行中にトピックが表示されない可能性があります。

メタデータの移行

移行計画に基づいて、移行するトピックとコンシューマーグループを選択します。移行ツールは、移行元クラスターからすべてのトピックとグループを読み取り、選択用に表示します。

重要

このステップは、次に進むと戻ることができません。[次へ] をクリックする前に、現在の移行バッチのすべてのトピックとグループがインポートされていることを確認してください。欠落しているトピックは、後で手動で作成する必要があります。

操作手順

  1. メタデータ移行 ステップで、トピックメタデータ タブをクリックします。

  2. リストからトピックを選択し、ドロップダウンリストから正しい メッセージタイプ を選択して、確認してインポート をクリックします。一度に複数のトピックをインポートするには、それらを選択して バッチインポート をクリックします。

    重要

    Apache RocketMQ 4.x では、トピックレベルでメッセージタイプが定義されていません。ApsaraMQ for RocketMQ は、割り当てたメッセージタイプがトピック内の実際のメッセージと一致することを検証します。アプリケーションロジックに基づいてタイプを選択してください。誤ったタイプを選択すると、移行後にメッセージの送受信に失敗します。メッセージタイプが不明な場合は、してください

  3. グループメタデータ タブをクリックします。コンシューマーグループを選択し、ドロップダウンリストから正しい 消費順序 を選択して、確認してインポート をクリックします。一度に複数のグループをインポートするには、それらを選択して バッチインポート をクリックします。

    重要

    Apache RocketMQ 4.x SDK では、メッセージの消費順序はクライアント側で指定されます。ApsaraMQ for RocketMQ 5.x では、ブローカーがグループレベルで消費順序を制御します。アプリケーションの要件に基づいて順序を選択してください。順序が正しくないと、消費例外が発生します。不明な場合は、してください

  4. この移行バッチのすべてのトピックとグループがインポートされていることを確認してから、次へ をクリックします。

エンドポイントの変更

すべてのプロデューサーおよびコンシューマーアプリケーションのエンドポイントを、移行元クラスターのアドレスから移行先の ApsaraMQ for RocketMQ 5.x インスタンスのアドレスに更新します。このステップの間、移行ツールは移行元クラスターへのトラフィックのルーティングを継続するため、アプリケーションがエンドポイントを更新する順序に関係なく、メッセージングは正常に機能します。

次に進む前に

  • エンドポイントを変更した後、各アプリケーションを再起動して宛先インスタンスに接続します。

  • すべてのプロデューサーおよびコンシューマーアプリケーションがエンドポイントを更新していることを確認してください:

    • 切り替えないプロデューサー:一部のメッセージの送信に失敗します。

    • 切り替えないコンシューマー:メッセージが蓄積され、消費できなくなります。

エンドポイント変更の例

Apache RocketMQ Remoting SDK

変更前 (移行元クラスター):

producer.setNamesrvAddr("192.168.XX.XX:9876");
consumer.setNamesrvAddr("192.168.XX.XX:9876");

SDK バージョン >= 4.5.1

変更後 (宛先インスタンス) -- バージョン 4.5.1 以降:

producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは false です。true に設定されている場合は、この行をコメントアウトしてください。
// producer.setVipChannelEnabled(false);

consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは false です。true に設定されている場合は、この行をコメントアウトしてください。
// consumer.setVipChannelEnabled(false);

SDK バージョン < 4.5.1

After(宛先インスタンス)-- 4.5.1 より前のバージョン:

producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは true です。false に設定してください。
producer.setVipChannelEnabled(false);

consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは true です。false に設定してください。
consumer.setVipChannelEnabled(false);

Apache RocketMQ gRPC SDK

変更前

ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
            .setEndpoints("192.168.XX.XX:9876")
            .setCredentialProvider(sessionCredentialsProvider)
            .build();

変更後

ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
            .setEndpoints("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080")
            .setCredentialProvider(sessionCredentialsProvider)
            .build();

操作手順

すべてのアプリケーションがエンドポイントを更新して再起動した後、エンドポイントの変更 ステップで 次へ をクリックします。

トラフィックの切り替え

トピックごとに読み取りおよび書き込みトラフィックを移行元クラスターから宛先インスタンスに切り替えます。トラフィックの切り替えは、トピックごとに 4 つの連続したステージを経て進行します。

次に進む前に

  • 各ステージで、次に進む前にメッセージが正常に送受信されていることを確認してください。問題が発生した場合は、前のステージにロールバックしてトラブルシューティングを行ってください。

  • 移行タスクを完了する前に、移行されたすべてのトピックのトラフィックを切り替え、正常な動作を確認してください。タスクが完了としてマークされた後、トラフィック切り替え設定は変更できません。

トラフィック切り替えステージ

各トピックは、以下の 4 つのステージを進行します。

ステージ読み取りトラフィック書き込みトラフィック検証内容
移行元クラスターでの読み取りと書き込み (初期)ソースクラスター移行元クラスター開始状態。操作は不要です。
移行元クラスターでの書き込み、両クラスターでの読み取り移行元および宛先クラスターソースクラスターコンシューマーは両方のクラスターからメッセージを受信します。宛先での消費が正常に機能することを確認します。
宛先クラスターでの書き込み、両クラスターでの読み取り移行元および宛先クラスター宛先クラスタープロデューサーは宛先に送信します。メッセージが正常に送受信されることを確認します。移行元クラスターに蓄積されたメッセージが完全に消費されるのを待ちます。
宛先クラスターでの読み取りと書き込み (最終)宛先クラスター宛先クラスターこのトピックの移行は完了です。すべてのトラフィックは宛先インスタンスを通過します。

各ステージのトラフィックトポロジー:

ステージトポロジー
移行元クラスターでの読み取りと書き込みRead and write in source cluster
移行元クラスターでの書き込み、両クラスターでの読み取りWrite in source, read in both
宛先クラスターでの書き込み、両クラスターでの読み取りWrite in destination, read in both
宛先クラスターでの読み取りと書き込みRead and write in destination cluster

各ステージでの検証チェック

ステージ実行されるチェック
移行元での書き込み、両方での読み取りトピックが両方のクラスターに存在すること。権限が正しく付与されていること。クライアントが宛先クラスターに接続されていること。すべてのクライアントが宛先クラスターに接続されていること。
宛先での書き込み、両方での読み取り前のステージと同じチェック。
宛先での読み取りと書き込み以前のすべてのチェックに加えて、移行元クラスターでメッセージが生成されていないこと、および移行元クラスターにメッセージの蓄積がないこと。

操作手順

  1. メッセージ移行 ステップで、移行するトピックを選択し、その検証ステータスを確認します。

    • チェック合格:次のステップに進みます。

    • 不合格:チェック結果に基づいてトラブルシューティングを行い、再検証 をクリックしてチェックが合格するまで繰り返します。

    • 不合格だが、ブロッキングではないことを確認済み:チェックを無視 をクリックして進みます。

  2. 操作 列で、トラフィックの切り替え をクリックします。

  3. 確認ダイアログで、OK をクリックします。

  4. トラフィック切り替えステージ宛先クラスターでの読み取りと書き込み を表示するまで、各ステージでステップ 1 から 3 を繰り返します。

  5. すべてのトピックが完全に切り替えられたら、ページ下部の 移行済み をクリックします。

追加操作

メッセージ移行 ページでは、以下の操作が利用できます。

  • ロールバック

    • 前のステージにロールバック:トピックを移行が正常に機能していた最後のステージに戻します。再度進む前にトラブルシューティングを行ってください。

    • 初期ステージにロールバック:元のルーティング状態に戻します。これは緊急のトラブルシューティングにのみ使用してください。

      説明

      初期ステージにロールバックすると、以前のステージで生成された未消費のメッセージが遅延したり、処理できなくなったりする可能性があります。

  • トピックの作成:メタデータ移行中にトピックが選択されなかった場合、宛先の ApsaraMQ for RocketMQ 5.x インスタンスで直接作成します。

  • バッチトラフィック切り替え / バッチロールバック:一度に複数のトピックのトラフィックを切り替えたり、ロールバックしたりします。両方の操作は、同じトラフィック切り替えステージにあるトピックにのみ適用されます。

参考資料

  • オープンソースの Apache RocketMQ と ApsaraMQ for RocketMQ の違い (移行メカニズムを含む) の背景については、「移行の概要」をご参照ください。

  • 移行タスクが完了したら、ApsaraMQ for RocketMQ ダッシュボードのメトリクスを使用して、インスタンスが期待どおりに実行されているかどうかを確認できます。例外が発生した場合は、タスクをロールバックできます。詳細については、「ダッシュボード」および「ロールバック」をご参照ください。