C WebLogic MDBがWebLogic JMS拡張を活用する方法

共有サブスクリプションや無制限のクライアントIDなど、MDBが特定のWebLogic JMS機能を利用する方法を調べます。

MDBデプロイメント・シナリオは、次のJMS機能を利用できるトピック・デプロイメント・シナリオに記述されています。

  • 共有サブスクリプション -- 共有サブスクリプションによって、サブスクライバが異なるMDBサーバーから作成される場合でも、複数のサブスクライバは1つのサブスクリプションを共有できるようになります。同一のサブスクリプションを共有するすべてのサブスクライバは、トピックにパブリッシュされたすべてのメッセージをまとめて処理します。各メッセージは、サブスクライバのいずれか1つのみによって処理されます。たとえば、S1とS2というサブスクライバが2つあり、M1、M2、M3という3つのメッセージがある場合、S1はM1とM2を受信し(ただしM3は受信しません)、S2はM3を受信します(ただしM1とM2は受信しません)。

    これによって、アプリケーションは単一のサブスクリプションのトピック・メッセージに関してラウンドロビン方式の分散処理または並列処理を採用できるようになります。MDBは、恒久/非恒久に関係なく、同一のサブスクリプション識別子で複数のサブスクライバを作成できます。JMSサブスクリプション共有ポリシーの詳細は、『Oracle WebLogic Server JMSリソースの管理』共有サブスクリプションの構成に関する項を参照してください。

  • 非制限クライアントID -- 制限クライアントIDを使用すると、複数の同時実行性アクティブ接続が同一のクライアントIDを使用できるようになります。JMSのclientIDはJMS接続を識別し、当該接続上で恒久サブスクリプションを識別するために使用されます。clientIDUnrestrictedに設定すると、複数の物理的なサブスクリプションを異なる宛先上で同一名で作成できるようになります。これによって、同一名のサブスクリプションは同一の分散トピックの異なるメンバー上に存在できるようになり、同時に、このようなサブスクリプションは単一の論理サブスクリプションとして処理できます。『Oracle WebLogic Server JMSリソースの管理』無制限ClientIDの構成に関する項を参照してください。

topicMessagesDistributionModeは、メッセージが分散トピックに配信される仕組みを制御するために、JMS属性SubscriptionSharingPolicyおよびClientIdPolicyの順列(接続ファクトリ上で設定)を定義します。Oracle WebLogic Serverは、表C-1で示されるようにこれらの値を設定します。

表C-1 topicMessagesDistributionMode設定とJMS接続ファクトリ上の設定間の関係

topicMessagesDistributionMode SubscriptionSharingPolicy ClientIdPolicy

One-Copy-Per-ServerまたはOne-Copy-Per-Application

Sharable

Unrestricted

Compatibility (レプリケートされた分散トピックおよび外部トピックのみ)

Exclusive

Restricted

接続ファクトリ上の設定がこれらの値ではない場合、Oracle WebLogic Serverは値をオーバーライドし、警告メッセージを表示します。Oracle WebLogic Serverがなんらかの理由で値をオーバーライドできない場合、例外がスローされ、管理者がJMS接続ファクトリ上で設定を変更しないかぎり、MDBはメッセージを処理できません。プログラム的にこのような属性を接続ファクトリ上で直接設定できません。そのかわり、topicMessagesDistributionModeを使用すると、MDBデプロイメントは接続インスタンス上で値を設定します。