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

ApsaraMQ for RocketMQ:消費量と放送消費量のクラスタリング

最終更新日:Jul 09, 2024

ApsaraMQ for RocketMQは、クラスタリング消費とブロードキャスト消費をサポートしています。 クラスター内のコンシューマーの消費モードをクラスター化またはクライアントでのブロードキャストに設定して、メッセージがクラスター内の1つのコンシューマーのみによって消費されるか、すべてのコンシューマーによって消費されるかを指定できます。

背景情報

ApsaraMQ for RocketMQは、Publish-Subscribeパターンに基づくメッセージングシステムです。 ApsaraMQ for RocketMQでは、コンシューマーがトピックをサブスクライブしてメッセージを取得および消費します。

同じグループIDで識別される複数のコンシューマは、同じコンシューマクラスタに属し、同じ消費ロジックとタグを使用する必要があります。 詳細については、「サブスクリプションの一貫性」をご参照ください。

消費のクラスタリング

基本的な概念

クラスタリング消費モードでは、グループ内の複数のコンシューマが特定のトピックからのメッセージを消費します。 ApsaraMQ for RocketMQは異なるコンシューマーにメッセージを配信し、各メッセージは1つのコンシューマーによってのみ消費されます。

图片2.png

シナリオ

  • メッセージ負荷分散: ビジネスで多数のメッセージが処理される場合、クラスタリング消費モードを使用して複数のコンシューマにメッセージを分散し、負荷分散を実装できます。 このように、各コンシューマは少数のメッセージのみを処理する。 これにより、メッセージ処理効率とスループットが向上します。

  • 分散データ処理: 大量のデータを処理する必要があるシナリオでは、クラスタリング消費モードを使用してデータを複数のノードに分散できます。 このように、各ノードは、少量のデータのみを処理する。 これにより、処理速度が向上する。

使用上の注意

  • クラスタリング消費モードでは、失敗したメッセージは必ずしも同じマシンに再配信されません。

  • 同じグループのコンシューマーには、必ず同じ消費モードを指定してください。 同じグループのコンシューマに対して異なる消費モードを指定した場合、ブロードキャスト消費モードが有効になります。

    たとえば、5つのコンシューマーで構成されるグループを作成します。 グループ内の2つのコンシューマーにクラスタリング消費モードを指定し、グループ内の他の3つのコンシューマーにブロードキャスト消費モードを指定した場合、ブロードキャスト消費モードは5つのコンシューマーすべてに使用されます。

放送消費量

基本的な概念

ブロードキャスト消費モードでは、グループ内の複数のコンシューマーが特定のトピックのメッセージを消費すると、ApsaraMQ for RocketMQは各メッセージをクラスター内のすべてのコンシューマーに配信します。 これにより、各メッセージが各コンシューマによって少なくとも1回消費されることが保証される。

このモードは、注文処理など、複数のコンシューマが同じメッセージグループを同時に処理するシナリオに適しています。

图片3.png

シナリオ

  • 通知および通知: 重要な通知または通知がリリースされると、システムは、ブロードキャスト消費モードを使用して、メッセージに加入しているすべてのユーザに通知または通知を送信することができる。 これにより、各ユーザが通知またはアナウンスを適時に受信することが保証される。

  • リアルタイムデータ同期: 分散システム内の特定のデータをリアルタイムで同期して、複数のノード間でデータの一貫性を維持する場合があります。 ブロードキャスト消費モードを使用して、データ変更を同期するすべてのノードにデータ変更に関する通知を送信できます。 このようにして、各ノードのデータを一貫させることができる。

使用上の注意

  • ブロードキャスト消費モードでは、ApsaraMQ for RocketMQは、メッセージが少なくとも1回は消費者によって消費されることを保証しますが、消費に失敗したメッセージは再配信されません。 消費の失敗を手動で処理する必要があります。

  • ブロードキャスト消費モードでは、コンシューマは、コンシューマが再起動されるたびに、最新のメッセージからメッセージ消費を開始する。 コンシューマーは、コンシューマーが停止したときにApsaraMQ for RocketMQブローカーに送信されるメッセージを自動的にスキップします。 このモードを使用するときは注意してください。

  • ブロードキャスト消費モードでは、各メッセージは多数の消費者によって繰り返し処理される。 ほとんどの場合、クラスタリング消費モードを使用することを推奨します。

  • 同じグループのコンシューマーには、必ず同じ消費モードを指定してください。 同じグループのコンシューマに対して異なる消費モードを指定した場合、ブロードキャスト消費モードが有効になります。

    たとえば、5つのコンシューマーで構成されるグループを作成します。 グループ内の2つのコンシューマーにクラスタリング消費モードを指定し、グループ内の他の3つのコンシューマーにブロードキャスト消費モードを指定した場合、ブロードキャスト消費モードは5つのコンシューマーすべてに使用されます。

クラスタリング消費と放送消費の違い

機能の可用性は、消費モードによって異なります。 次の表に、クラスタリング消費モードで使用できる機能と、ブロードキャスト消費モードで使用できる機能を示します。

機能

クラスタリング消費モード

放送消費モード

TCPクライアントSDK

对号

对号

HTTPクライアントSDK

对号

错号

注文メッセージ

对号

错号

消費者オフセットリセット

对号

错号

メッセージの再試行

对号

错号

蓄積されたメッセージのクエリとアラート

对号

错号

サブスクリプションクエリ

对号

错号

消費者の進歩

ApsaraMQ for RocketMQブローカーで維持。

  • サービス信頼性は、ブロードキャスト消費モードよりもクラスタリング消費モードの方が高い。 コンシューマーが再起動された後、コンシューマーは最後の消費の進行状況に基づいてメッセージを消費し続けます。

  • ApsaraMQ for RocketMQブローカーは、メッセージの再試行をサポートしています。 詳細については、「メッセージの再試行」をご参照ください。

クライアントに維持。

ブロードキャスト消費モードでメッセージが繰り返し消費される確率は、クラスタリング消費モードよりも高い。 コンシューマが再起動されるたびに、コンシューマは最新のメッセージから消費を開始します。

クラスタリング消費モードとブロードキャスト消費モードの設定

ApsaraMQ for RocketMQでは、クライアントの消費モードを変更できます。 消費モードを変更するには、メッセージをサブスクライブするSDKのコードで対応するパラメーターを設定する必要があります。 パラメーターを設定しない場合は、クラスタリング消費モードが使用されます。

TCPクライアントSDK

SDK for Javaのサンプルコード

  • 消費のクラスタリング

    // Set the MessageModel parameter to CLUSTERING. If you do not configure this parameter, the clustering consumption mode is automatically used. 
    properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING);
  • 放送消費量

    // Set the MessageModel parameter to BROADCASTING. 
    properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING); 

SDK for CまたはC ++ のサンプルコード

  • 消費のクラスタリング

    // Set the MessageModel parameter to CLUSTERING. If you do not configure this parameter, the clustering consumption mode is automatically used. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty:: MessageModel, ONSFactoryProperty::CLUSTERING);
  • 放送消費量

    // Set the MessageModel parameter to BROADCASTING. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty:: MessageModel, ONSFactoryProperty::BROADCASTING);

SDK forのサンプルコード。NET

  • 消費のクラスタリング

    // Set the MessageModel parameter to CLUSTERING. If you do not configure this parameter, the cluster consumption mode is automatically used. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.CLUSTERING); 
  • 放送消費量

    // Set the MessageModel parameter to BROADCASTING. 
    factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.BROADCASTING);     

HTTPクライアントSDK

デフォルトでは、HTTPクライアントSDKはクラスタリング消費モードをサポートしています。 消費モードを指定するためにパラメータを設定する必要はありません。

FAQ

指定後にクラスタリング消費モードが有効にならないのはなぜですか?

この問題は、次のいずれかの理由で発生する可能性があります。

  • 処理するメッセージは、順序付けられたメッセージです。 順序付けられたメッセージは、クラスタリングの消費のみをサポートします。

  • 使用するSDKはHTTPクライアントタイプです。 HTTPクライアントは、クラスタリングの消費のみをサポートします。

グループ内の消費者ごとに異なる消費モードを指定できますか?

いいえ、グループ内の異なるコンシューマーに対して異なる消費モードを指定することはできません。

同じグループのコンシューマーには、必ず同じ消費モードを指定してください。 同じグループのコンシューマに対して異なる消費モードを指定した場合、ブロードキャスト消費モードが有効になります。

関連ドキュメント

メッセージングの完全なサンプルコードについては、「」をご参照ください。