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

ApsaraMQ for RocketMQ:優先度付きメッセージ

最終更新日:May 19, 2026

優先度付きメッセージは、ApsaraMQ for RocketMQ の高度なメッセージタイプです。このトピックでは、優先度付きメッセージのユースケース、仕組み、制限、ベストプラクティスについて説明します。

前提条件

  • インスタンスバージョン: 5.0-rmq-20260304-1 以降。

  • クライアント gRPC SDK バージョン:

    • Java SDK: 5.2.0 以降。

    • その他の言語 SDK: 今後リリース予定。

ユースケース

分散システムでは、計算能力や API クォータなどのリソースは通常、限られています。重要度が異なる多数のメッセージが同時に到着する場合、システムはコアビジネスのリクエストを識別し、優先して処理する必要があります。優先度付きメッセージを使用すると、プロデューサーは各メッセージに優先度レベルを割り当てることができます。これにより、システムが輻輳している場合でも、高優先度のタスクが先に処理されます。

AI 計算リソースのスケジューリング

AI ワークロードでは、計算リソース (GPU/NPU) が非常に希少で、スケジューリングコストも高くなります。優先度付きメッセージを使用して、変動するリクエストストリームのスケジューリングを平準化できます:

  • タスク種別に基づく優先付け: コアビジネスタスク (リアルタイムの EC レコメンドなど) は実験モデルよりも優先度を高くします。オンライン推論タスク (ユーザーのリアルタイムリクエスト) はオフライントレーニングタスクよりも優先度を高くします。

  • リソース規模に合わせた優先度の調整: 小バッチのクイック検証タスクは、高優先度を割り当ててリソースを迅速に解放できます。大規模な事前学習タスクは、緊急性に応じて優先度を下げます。

  • 緊急性に基づく優先付け: 厳格な期限があるタスク (自動運転モデルのリアルタイム更新など) には、最も高い優先度を割り当てる必要があります。

API レート制限

サードパーティのサービスプロバイダーの中には、アカウントレベルで統一のレート制限を適用する場合があります。複数の業務ライン (注文処理、ステータス同期、ログ記録など) のメッセージが同じコンシューマーキューを共有している場合、優先度設定を使用して 注文関連メッセージ を先に処理できます。これにより、支払いまたはアクティベーション時のユーザーの待ち時間を回避し、コアビジネスの処理成功率を向上させます。

マーケティングのプッシュ通知

多数のグループにメッセージをプッシュするソーシャルプラットフォームや店舗管理システムでは、緊急性の要件 に基づいて異なる優先度を割り当てることができます。たとえば、カスタマーサービス担当者と顧客のリアルタイムメッセージには高い優先度を、マーケティングおよび通知メッセージには低い優先度を割り当て、異なる即時性の要件を満たします。

仕組み

優先度付きメッセージでは、プロデューサーが送信時に各メッセージに数値の優先度レベルを割り当てます。メッセージの滞留が発生した場合、ApsaraMQ for RocketMQ は ベストエフォート で、優先度の高い順にメッセージをコンシューマーへ配信します。

image

ワークフローは次のとおりです:

  1. メッセージを送信する前に、プロデューサーはメッセージプロパティを使用して優先度を設定します。例: message.setPriority(int level)

  2. メッセージを保存する際、システムは各メッセージを、その優先度レベルに基づいて優先度トピック配下の別々のキューに書き込みます。各キューは 1 つの優先度レベルに対応します。

  3. コンシューマーがブローカーからメッセージを取得する際、最も優先度の高いキューから先にプルします。

メッセージの優先度は、単一のブローカーノード内では厳密に順序付けされます。つまり、そのノードでは高優先度メッセージが常に先に消費されます。ブローカー間のグローバルな順序付けは保証されません。分散デプロイでは、各ブローカーは異なるコンシューマーによって並列に消費されるため、全体としては「高優先度メッセージのベストエフォートな優先付け」という効果になります。

制限事項

  • 優先度の範囲: デフォルトのメッセージ優先度は 0 ~ 9 の整数で、値が大きいほど優先度が高くなります。

  • トピックレベルの制限: 各トピックには最大優先度 (デフォルトは 9) を設定できます。トピックの優先度の上限を変更するには、サポートチケットを送信するか、管理者にお問い合わせください。

ベストプラクティス

PushConsumer の maxCacheMessageCount の削減

ローカルキャッシュキュー内のメッセージは、優先度でソートされません。PushConsumer のローカルキャッシュ内のメッセージ数を減らすことで、未処理メッセージが可能な限り優先度順に配信されるようになります。

優先度キューにおける同時配信コンシューマーグループの使用

優先度に基づく消費はメッセージの送信順序を崩すため、順序付きメッセージ配信とは両立しません。優先度付きメッセージを消費する場合は、コンシューマーグループの deliveryOrderTypeConcurrently に設定してください。