7.3. メッセージグループの使用

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

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

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

グループ ID の設定

以下の例は、AMQ Core Protocol JMS でメッセージグループを使用する方法を示しています。

手順

  • JNDI を使用して JMS クライアントの JMS 接続ファクトリーを確立する場合は、groupID パラメーターを追加して値を指定します。この接続ファクトリーを使用して送信されたすべてのメッセージでは、プロパティー JMSXGroupID が指定の値に設定されます。

    java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
    connectionFactory.myConnectionFactory=tcp://localhost:61616?groupID=MyGroup
  • JNDI を使用していない場合は、setStringProperty() メソッドを使用して JMSXGroupID プロパティーを設定します。

     Message message = new TextMessage();
     message.setStringProperty("JMSXGroupID", "MyGroup");
     producer.send(message);

その他のリソース

メッセージグループの設定方法と使用方法の作業例は、<install-dir>/examples/features/standardmessage-group および message-group2 を参照してください。