第11章 メッセージのグループ化


メッセージグループは、以下の特性を持つメッセージセットです。

  • メッセージグループのメッセージは同じグループ ID を共有します。つまり、グループ識別子プロパティーは同じです。JMS メッセージの場合、プロパティーは JMSXGroupID です。
  • メッセージグループのメッセージは、キューに多くのコンシューマーがある場合でも、常に同じコンシューマーによって消費されます。元のコンシューマーが閉じられている場合、別のコンシューマーがメッセージグループを受信するように選択されます。

メッセージグループは、プロパティーの特定値のすべてのメッセージを同じコンシューマーで順次に処理したい場合に便利です。たとえば、特定の株式購入の注文を同じコンシューマーで順次処理したい場合があります。これを行うには、コンシューマーのプールを作成し、株式名をメッセージプロパティーの値として設定します。これにより、特定の株式のすべてのメッセージが常に同じコンシューマーによって処理されます。

注記

グループ化されたメッセージは、キューの基礎となる FIFO セマンティクスが原因で、グループ化されていないメッセージの同時処理に影響を及ぼす可能性があります。たとえば、キューの先頭に 100 のグループ化されたメッセージのチャンクがあり、その後に 1,000 個の非グループ化のメッセージが続くと、グループ化されていないメッセージが消費される前に、グループ化されたすべてのメッセージが適切なクライアントに送信されます。このシナリオにおける機能への影響は、グループ化されたすべてのメッセージが処理される間、同時メッセージ処理の一時的な停止です。メッセージグループのサイズを決定する際には、パフォーマンスのボトルネックの可能性を念頭に置いてください。グループ化されたメッセージをグループ以外のメッセージから分離するかどうかを検討してください。

11.1. 自動メッセージのグループ化

グループ ID を独自に指定する代わりに、ID を自動的に生成することができます。この方法でグループ化されたメッセージは、1 つのコンシューマーによって順次処理されます。

手順

以下の例は、Core JMS クライアントを使用してメッセージのグループ化を有効にする方法を示しています。

  • グループ ID の自動生成を有効にします。

    • JNDI コンテキスト環境を使用して JMS 接続ファクトリーをインスタンス化する場合は、autogroup=true name-value ペアを接続 URL のクエリー文字列に追加します。

      java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
      connectionFactory.myConnectionFactory=tcp://localhost:61616?autoGroup=true
      Copy to Clipboard Toggle word wrap
    • JNDI を使用していない場合は、ActiveMQConnectonFactoryautogrouptrue に設定します。

      ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(...);
      cf.setAutoGroup(true);
      Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat