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

ApsaraMQ for RocketMQ:メッセージ

最終更新日:Nov 10, 2025

このトピックでは、ApsaraMQ for RocketMQ のメッセージの定義、モデル関係、内部属性、動作制約、および使用上の注意について説明します。

定義

メッセージは、ApsaraMQ for RocketMQ におけるデータ伝送の最小単位です。プロデューサーは、ビジネスデータのペイロードと拡張属性をメッセージにカプセル化し、そのメッセージを ApsaraMQ for RocketMQ ブローカーに送信します。その後、ブローカーは関連するセマンティクスに基づいてメッセージをコンシューマーに配信します。

ApsaraMQ for RocketMQ のメッセージモデルには、次の特徴があります。

  • 不変性

    メッセージは生成されたイベントです。メッセージが生成された後、メッセージの内容は変更されません。メッセージが伝送チャネルを通過しても、メッセージの内容は同じままです。コンシューマーが取得するメッセージは読み取り専用メッセージです。

  • 永続性

    デフォルトでは、ApsaraMQ for RocketMQ は、ApsaraMQ for RocketMQ ブローカー上のファイルにメッセージを保存することで、メッセージを永続化します。これにより、システム障害が発生した場合でもメッセージを追跡および回復できます。

モデル関係

次の図は、ApsaraMQ for RocketMQ のドメインモデルにおけるメッセージの位置を示しています。消息

  1. メッセージはプロデューサーによって初期化され、ApsaraMQ for RocketMQ ブローカーに送信されます。

  2. メッセージは、ApsaraMQ for RocketMQ ブローカーが受信した順序でキューに保存されます。

  3. コンシューマーは、サブスクリプション関係に従って ApsaraMQ for RocketMQ ブローカーからメッセージを取得して消費します。

内部属性

システム属性

Topic 名

  • 定義: メッセージが属する Topic の名前。Topic 名はクラスター内でグローバルに一意です。詳細については、「Topic」をご参照ください。

  • 値: SDK インターフェイスから取得されます。

Lite Topic 名

  • 定義: メッセージが属する Lite Topic の名前。Topic タイプが Lite の場合、名前はその Topic 内でグローバルに一意です。詳細については、「Lite Topic モデル」をご参照ください。

  • 値: SDK インターフェイスから取得されます。

メッセージタイプ

  • 定義: メッセージのタイプ。

  • 値: SDK インターフェイスから取得されます。ApsaraMQ for RocketMQ は、次のメッセージタイプをサポートしています。

    • 通常: 通常メッセージ。通常メッセージには特別なセマンティクスはなく、他のメッセージと相関関係はありません。

    • FIFO: 順序付きメッセージApsaraMQ for RocketMQ は、メッセージグループ (MessageGroup) を使用して一連のメッセージの順序を指定します。これにより、メッセージが送信された順序どおりに配信されることが保証されます。

    • 遅延: スケジュールメッセージと遅延メッセージ。時間遅延を指定して、メッセージが送信直後に配信されないようにすることができます。メッセージは、指定された遅延時間が経過した後にのみコンシューマーに表示されます。

    • トランザクション: トランザクションメッセージApsaraMQ for RocketMQ は、分散トランザクションメッセージをサポートしています。データベースの更新とメッセージ呼び出しのトランザクションの一貫性を保証します。

    • Lite: Lite メッセージ。LiteTopic 機能は、Lite メッセージタイプの Topic でのみ使用できます。

メッセージキュー

  • 定義: メッセージが保存されるキュー。詳細については、「メッセージキュー」をご参照ください。

  • 値: ブローカーによって指定され、入力されます。

メッセージオフセット

  • 定義: キュー内でのメッセージの位置。詳細については、「消費の進行状況」をご参照ください。

  • 値: ブローカーによって指定され、入力されます。有効な値: 0 から Long.Max。

メッセージ ID

  • 定義: メッセージの一意の識別子。各メッセージ ID はクラスター内でグローバルに一意です。

  • 値: プロデューサークライアントによって自動的に生成されます。メッセージ ID は、数字と大文字で構成される 32 文字の文字列です。

(オプション) インデックスキーリスト

  • 定義: メッセージのインデックスキー。キーを設定してメッセージを分類し、迅速に取得できます。

  • 値: プロデューサークライアントによって定義されます。

(オプション) フィルタリングタグ

  • 定義: メッセージをフィルタリングするために使用されるタグ。コンシューマーはタグでメッセージをフィルタリングして、指定されたタグを持つメッセージのみを受信できます。

  • 値: プロデューサークライアントによって定義されます。

  • 制約: メッセージには 1 つのタグしか指定できません。

(オプション) スケジュール時間

  • 定義: スケジュール配信シナリオでは、これはメッセージが配信されるときのミリ秒単位のタイムスタンプです。詳細については、「スケジュールメッセージと遅延メッセージ」をご参照ください。

  • 値: メッセージプロデューサーによって定義されます。

  • 制約:

    • サブスクリプションおよび従量課金 Standard Edition インスタンス、および Serverless Standard および Professional Edition インスタンス: 最大 7 日間。

    • サブスクリプションおよび従量課金 Professional Edition および Platinum Edition インスタンス: 最大 40 日間。

    詳細については、「クォータと制限」をご参照ください。

メッセージ送信時間

  • 定義: メッセージが送信されたときのプロデューサークライアントのローカルタイムスタンプ (ミリ秒単位)。

  • 値: プロデューサークライアントによって入力されます。

  • 注: クライアントの時計はブローカーの時計と異なる場合があります。メッセージの送信時間はクライアントの時計に基づきます。

メッセージ保持タイムスタンプ

  • 定義: メッセージが保存されたときの ApsaraMQ for RocketMQ ブローカーのローカルタイムスタンプ (ミリ秒単位)。

    スケジュールメッセージとトランザクションメッセージの場合、メッセージ保持時間は、メッセージが有効になったときにコンシューマーに表示されるブローカー時間です。

  • 値: ブローカーによって入力されます。

  • 注: クライアントの時計はブローカーの時計と異なる場合があります。メッセージの保持時間はブローカーの時計に基づきます。

消費リトライ回数

  • 定義: 消費が失敗した後に ApsaraMQ for RocketMQ ブローカーがメッセージを再配信する回数。リトライ回数は、リトライ試行ごとに 1 ずつ増加します。詳細については、「消費リトライ」をご参照ください。

  • 値: ブローカーによってマークされます。最初のリトライ試行のリトライ回数は 0 です。消費が失敗した後、最初のリトライ試行のリトライ回数は 1 です。

メッセージのカスタム属性

カスタム属性

  • 定義: プロデューサーがカスタマイズできる拡張情報。

  • 値: メッセージプロデューサーによって文字列のキーと値のペアとして定義されます。

メッセージロード

メッセージロード

  • 定義: ビジネスメッセージのペイロード。

  • 値: プロデューサーによってシリアル化およびエンコードされ、バイナリバイト配列として送信されます。

  • 制約: 詳細については、「パラメーターの制限」をご参照ください。

動作の制約

メッセージのサイズは上限を超えることはできません。メッセージのサイズが対応する上限を超えると、メッセージの送信に失敗します。

デフォルトの最大メッセージサイズは次のとおりです。

  • 通常メッセージと順序付きメッセージ: 4 MB

  • トランザクションメッセージ、スケジュールメッセージ、および遅延メッセージ: 64 KB

使用上の注意

単一メッセージでの過負荷伝送は推奨されません。

メッセージングミドルウェアとして、ApsaraMQ for RocketMQ はビジネスイベントデータを送信するように設計されています。単一メッセージのデータサイズを制御することをお勧めします。メッセージが大きすぎると、ネットワークトランスポートレイヤーの負荷が増加し、リトライやトラフィックシェーピングなどの機能には理想的ではありません。

本番環境で過負荷伝送が必要な場合は、固定サイズに基づいてメッセージを分割するか、ファイルストレージ方式を使用することをお勧めします。

メッセージの不変性

ApsaraMQ for RocketMQ 5.x ブローカーでは、メッセージは不変です。コンシューマーは読み取り専用のメッセージビューを取得します。

3.x および 4.x バージョンには不変性の制約がないため、メッセージを転送する場合は、メッセージを再初期化する必要があります。

  • 正しい例:

    Message m = Consumer.receive();
    Message m2= MessageBuilder.buildFrom(m);
    Producer.send(m2);
  • 誤った例:

    Message m = Consumer.receive();
    m.update();
    Producer.send(m);