第9章 JBoss Messaging 順序グループの有効化

このセクションでは、厳密なメッセージ順序を実現するための JBoss Messaging の順序グループの使用方法について説明します。
メッセージ順序グループは、厳密なメッセージ順序の JBoss Messaging 実装です。順序グループの機能が有効な場合、メッセージの優先度はメッセージが配信された順序に対し影響力がなくなります。特定の順序グループ内のメッセージは、目的のキューに到着した順序と全く同じ順序で配信されます (FIFO)。
前のメッセージの配信が完了してからでないと、順序グループにある次のメッセージが配信されません。正常なメッセージ配信を表すシグナルを送信するには、受信確認メカニズムを利用します (「受領確認メカニズム」 を参照のこと)。
トラザクション的な受領

トランザクション的にメッセージを受け取る場合、現在のメッセージの受領確認も含むトランザクションがコミットされるまで次のメッセージは配信されません。トランザクションがロールバックすると、メッセージは取り消され、JMS サーバーに戻されて次の配信に備えます。

9.1. 受領確認メカニズム

順序グループの一部を形成するメッセージは、1 通ずつ配信されます。前のメッセージの配信が完了するまで、次のメッセージは配信されません。メッセージ配信の完了は、確認モードの設定により様々な方法で伝えられます。
  • CLIENT_ACKNOWLEDGE モードでは、Message.acknowledge() メソッドが完了状態を伝えることになります。
  • AUTO_ACKNOWLEDGEDUPS_OK_ACKNOWLEDGE モードでは、次のいずれかでメッセージの完了が伝えられます。
    • MessageConsumer.receive() メソッドのいずれか 1 つから成功が返される場合、または
    • MessageListener()onMessage() 呼び出しから成功が返される場合

注記

メッセージコンシューマーが閉じられると、閉じられた時点で処理されたメッセージは完了とみなされます。コンシューマーが閉じられる前に *_ACKNOWLEGE が呼び出されたかどうかは関係ありません。