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

ApsaraMQ for RocketMQ:トピック

最終更新日:Aug 21, 2024

このトピックでは、ApsaraMQ for RocketMQのトピックの定義、モデル関係、内部属性、動作制約、バージョン互換性、および使用法に関する注意事項について説明します。

定義

ApsaraMQ for RocketMQでは、トピックはメッセージの送信と保存に使用されるトップレベルのコンテナーです。 トピック内のメッセージは同じ消費ロジックを使用します。

トピックは次の利点を提供します。

  • メッセージの分類と分離

    ApsaraMQ for RocketMQを使用する場合は、異なるトピックを使用して、分離ストレージとサブスクリプションの異なるビジネスタイプのメッセージを管理することを推奨します。

  • IDと権限の管理

    ApsaraMQ for RocketMQのメッセージは匿名です。 トピックを使用して、特定のカテゴリのメッセージのIDおよび権限管理を実行できます。

モデル関係

次の図は、ApsaraMQ for RocketMQのドメインモデルにおけるトピックの位置を示しています。

主题

ApsaraMQ for RocketMQでは、トピックはすべてのメッセージリソースが定義されているトップレベルのストレージコンテナです。 トピックは、メッセージを格納する実際の単位ではなく、論理的な概念です。

トピックには、メッセージの保存とスケーリングを容易にする1つ以上のキューが含まれます。 トピックのすべての制約と属性設定は、トピック内のキューに基づいて実装されます。

内部属性

トピック名

  • Definition: トピックの名前。 トピック名はトピックを識別し、クラスター内でグローバルに一意です。

  • 値: トピック名は、トピックの作成時にユーザーによって指定されます。

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

キュー

  • 定義: メッセージを格納する実際のストレージユニット。 トピックには1つ以上のキューが含まれます。 詳細については、「メッセージキュー」をご参照ください。

  • 値: トピックの作成時にキューの数を指定できます。 ApsaraMQ for RocketMQは、指定された数のキューをトピックに割り当てます。

  • 制約: トピックには少なくとも1つのキューが含まれている必要があります。

メッセージタイプ

  • 定義: トピック内のメッセージのタイプ。

  • 値: ApsaraMQ for RocketMQでトピックを作成するときに、次のいずれかのメッセージタイプを選択できます。

    • Normal: 通常のメッセージ 通常のメッセージは、特別なセマンティクスを必要とせず、他の通常のメッセージと相関しない。

    • FIFO: 順序付けられたメッセージ ApsaraMQ for RocketMQは、メッセージグループを使用して特定のメッセージセットの順序を決定します。 メッセージは、メッセージが送信される順序で配信される。

    • 遅延: スケジュール済みメッセージと遅延済みメッセージ メッセージをすぐに配信したくない場合は、メッセージの遅延を指定できます。 このようにして、遅延が経過したときにメッセージが消費者に利用可能になる。

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

  • 制約: トピックは、1種類のメッセージのみを送受信するために使用できます。

行動の制約

強制メッセージタイプの検証

ApsaraMQ for RocketMQ 5.xでは、メッセージタイプはトピックごとに管理および処理されます。 送信されたメッセージのタイプが、トピックに定義されているメッセージタイプに対して強制的に検証されます。 検証が失敗した場合、メッセージ配信要求は拒否され、型不一致エラーが返されます。 次の検証ルールが適用されます。

  • メッセージタイプは一貫している必要があります

    送信されるメッセージのタイプは、宛先トピックに指定されているメッセージタイプと同じである必要があります。

  • トピックに送信されるメッセージの種類は1つだけです。

    トピックに送信できるメッセージの種類は1つだけです。

不正な使用の例

  • トピックのメッセージタイプと一致しないメッセージを送信する

    たとえば、通常のメッセージタイプはトピックに指定されていますが、トランザクションメッセージはトピックに送信されます。 この場合、メッセージ送信要求は拒否され、メッセージタイプ不一致エラーが返されます。

  • 異なるタイプのメッセージをトピックに送信する

    たとえば、通常のメッセージタイプはトピックに指定されていますが、通常のメッセージと順序付けられたメッセージはトピックに送信されます。 この場合、順序付けられたメッセージに対応する要求は拒否され、メッセージタイプ不一致エラーが返されます。

バージョンの互換性

強制的なメッセージタイプの検証は、ApsaraMQ for RocketMQ 5.xブローカーでのみ有効です。

ApsaraMQ for RocketMQ 4.xブローカーを使用する場合、強制的なメッセージタイプの検証を実行しなくても、送信されるメッセージのタイプをトピックに定義されたメッセージタイプと一致させることを推奨します。

使用上の注意

ビジネス要件に基づいてトピックを計画する

ApsaraMQ for RocketMQでトピックを計画する場合、1つのトピックを使用して、同じ属性を持つメッセージを処理します。 トピックを計画するときは、次の点に注意してください。

  • メッセージの種類: さまざまなトピックを使用して、さまざまな種類のメッセージを管理します。 たとえば、2つのトピックを作成して、順序付けられたメッセージと通常のメッセージを別々に管理できます。

  • メッセージ相関: 直接相関しないメッセージを管理するには、個別のトピックを使用します。 たとえば、TaobaoトランザクションメッセージとFreshippoロジスティクスメッセージの2つのトピックを作成します。 メッセージが直接関連付けられている場合は、同じトピックを使用できます。 たとえば、淘宝網で紳士服と婦人服の注文メッセージに1つのトピックを作成できます。 ビジネスボリュームまたはサブモジュールにきめ細かいトピックが必要な場合は、さらに分類できるメッセージにさまざまなトピックを使用できます。 たとえば、淘宝網で紳士服と婦人服用に作成されたメッセージの2つのトピックを作成できます。

  • メッセージの量と適時性: 異なるトピックを使用して、量や適時性が異なるメッセージを処理します。 たとえば、少数の時間依存メッセージを生成するサービスと、何兆ものメッセージを生成するサービスには、同じトピックを使用しないでください。 これにより、時間に敏感なメッセージの待ち時間が長くなるのを防ぎます。

正しいトピック計画の例: eコマースシナリオでは、注文の作成、支払い、キャンセルメッセージなどの注文関連メッセージのトピック、物流メッセージのトピック、報酬ポイント関連メッセージのトピックを使用できます。

誤ったトピック計画の例:

  • 過度に粗い粒度: これは、不十分な分離を引き起こし、独立したO&Mおよび障害処理を妨げる。 たとえば、すべてのトランザクションメッセージと物流メッセージに同じトピックを使用します。

  • 過度に細かい粒度: これは、多数のトピックリソースを消費し、システム負荷を増加させる。 たとえば、ユーザーごとに生成されるメッセージには個別のトピックを使用します。

トピックを使用して同じタイプのメッセージを送受信する

トピックベースのビジネス分離は、ApsaraMQ for RocketMQの設計原則です。 異なるビジネスロジックを使用するメッセージには、異なるトピックを使用することを推奨します。 各トピックは、特定のタイプのメッセージを送受信するために使用できます。

トピックの自動管理を防ぐ

ApsaraMQ for RocketMQのトピックは、個別の権限管理、可観測性メトリクス収集、およびモニタリング機能を提供するトップレベルのリソースおよびコンテナです。 トピックを作成および管理するには、システムリソースが必要です。 操作が必要な場合にのみ、本番環境でトピックを追加、削除、変更、およびクエリすることをお勧めします。