CMP API を使用して、同じブローカーに対する複数の要求をグループ化し、それらを単一の作業単位として実行依頼します。
バッチを開始するには、アプリケーションが BrokerProxy ハンドルで beginUpdates() メソッドを呼び出す必要があります。 CMP API は、要求のバッチが送信の準備ができるまで、ブローカーに対して、どの状態変更要求の実行依頼も遅らせます。
sendUpdates() メソッドは、最後の beginUpdates() 呼び出し以降に受け取った要求をバッチとして実行依頼するように CMP API に指示します。 clearUpdates() メソッドは、ブローカーにバッチを実行依頼しないで廃棄するために使用することができます。 アプリケーションは、isBatching() メソッドを使用して、バッチが現在進行中かどうかを確認することができます。 CMP API ハンドルに対して進行中になることができるバッチは、どの時点においても 1 つだけです。
バッチ・メソッドを使用する利点の 1 つは、バッチ中に、その他のアプリケーションではブローカーによって処理されるメッセージがないことを保証することです。 ブローカーがバッチ要求を受け取ると、各要求をバッチに追加された順序 (FIFO) でバッチ処理し、その他の CMP アプリケーションからの要求はバッチ全体が完了するまで処理されません。
ExecutionGroupProxy e = b.createExecutionGroup("EG2");
e.deploy("mybar.bar");
バッチ・メソッドを使用しないと、アプリケーションはこれらのアクションを成功させることは保証できません。 例えば、各コマンドが別の方法で成功するとしても、2 番目の (おそらくリモート) アプリケーションは、実行グループ EG2 が最初のアプリケーションによって作成された後で、他のコマンドが処理される前に、そのブローカーを削除することができます。
b.startUpdates();
ExecutionGroupProxy e = b.createExecutionGroup("EG2");
e.deploy("mybar.bar");
b.sendUpdates();
バッチ・メソッドを使用する別の利点は、パフォーマンスです。 CMP は通常、1 つの WebSphere® MQ メッセージを要求ごとにブローカーに送信します。
たくさんの要求を立て続けに送信しなければならない状況では、バッチを使用すると、要求を処理する時間とメモリー使用量の両方を削減できるという点で、パフォーマンスに重大な影響を与えます。 例えば、アプリケーションが 1 つのブローカー上で多数の実行グループを作成する場合があります。 各バッチ要求は単一の WebSphere MQ メッセージで送信されるため、各メソッドに要求される処理は大幅に削減されます。
バッチ・モードではトランザクション (コミットとバックアウト) の能力を提供しません。バッチ内の一部の要求は成功し、それ以外は失敗する可能性があります。 ブローカーが要求をバッチで処理して失敗するとしても、ブローカーがすべての要求をバッチで試行するまで、次の要求もバッチでの処理を続けます。