パブリケーションのメッセージ・コンテンツのフィルター

サブスクライブしたトピックにあるすべてのメッセージを受信する代わりに、 ご使用のコンシューマー・アプリケーションで XML Path (XPath) セレクターを使用して、各メッセージの内容に基づいてメッセージをフィルターに掛けることができます。. この内容ベースのサブスクリプションを使用すると、受信する情報のタイプを非常に柔軟に定義できるほか、アプリケーションで独自のフィルタリングを処理する必要がありません。関係のないメッセージがサーバーからアプリケーションに不要に送信されないため、パフォーマンスが向上します。

このタスクについて

WS-Notification パブリッシュおよびサブスクライブ・メッセージング・モデル はトピック・ベースです。各パブリケーションは、一連のトピックのいずれか 1 つに属するように分類されます。 パブリッシャーは各パブリケーションにトピック名を付け、 コンシューマーは特定のトピックに属するすべてのパブリケーションをサブスクライブします。 例えば、株取引通知システムで、株式ごとにトピックを定義できるとします。 パブリッシャーは株式の名前をトピック名としてその株式に関連する情報をポストし、 サブスクライバーは株式に関連する情報をサブスクライブします。

メッセージ本体の XML メッセージ・コンテンツに対して評価されるブール式を使用することによって、 XPath セレクターを使用して所定のトピックのメッセージをフィルターに掛ける ことができます。例えば、株取引向けのトピック・ベースのパブリッシュ/サブスクライブ・システムのサブスクライバーは、XPath セレクターを使用して、同時に以下の 3 つのメッセージ属性に対する制約を指定することができます。
  • 株式名
  • 株価
  • 株式数
次のようなブール・ステートメントが得られます。
(issue="IBM") and (price<120) and (volume>1000)

XML Path (XPath) Language バージョン 1.0 を使用して、サブスクライブ・アプリケーションに XPath 1.0 メッセージ・コンテンツ・フィルターをコーディングします。

注: サブスクライバー・アプリケーションがメッセージ・コンテンツ・フィルターを使用し、 XPath バージョン 1.0 の SelectorDomain を指定するようにコーディングされている場合は、 タイプ JMS TextMessage または BytesMessage の他の WS-Notification プロバイダーからのパブリケーションもフィルターすることができます。 これらのメッセージ・タイプについて詳しくは、 サービス統合バスへのエントリーまたはエグジット・ポイントとしての WS-Notification のトポロジーを参照してください。

XPath セレクターを使用してパブリケーションのメッセージ・コンテンツをフィルターに掛ける には、以下のステップを実行します。

手順

  1. WS-Notification コンシューマーをサブスクライブする新規のアプリケーションを作成します。
  2. サブスクライブ・アプリケーションに XPath メッセージ・コンテンツ・フィルターをコーディングします。 この方法のコード例については、 例: WS-Notification コンシューマーのサブスクリプションを参照してください。 メッセージ・コンテンツ・フィルターの使用例については、このタスクの最後に記載されている例を参照してください。
  3. フィルターが無効である場合のエラー処理をコーディングします。
  4. アプリケーションを起動します。

次の XML コード例では、XPath セレクターを使用するメッセージ・コンテンツ・フィルターを示します。この例では、NotificationConsumer アプリケーションで表されるビジネスに、$1,000,000 を超える銀行振替を通知する必要があります。 次の WS-Notification サブスクライブ・メッセージで、モニター・アプリケーションは、 NotificationConsumer に代わってサブスクライブし、 有効な XPath バージョン 1.0 のメッセージ・コンテンツ・フィルターを指定します。

<wsnt:Subscribe>
  <wsnt:ConsumerReference>
    wsa:EndpointReference
  </wsnt:ConsumerReference>
  <wsnt:Filter>
    [ <wsnt:TopicExpression Dialect="xsd:anyURI"> 
        {any} ?
      </wsnt:TopicExpression> |
      <wsnt:ProducerProperties Dialect="xsd:anyURI"> 
        {any} ?
      </wsnt:ProducerProperties> |
      <wsnt:MessageContent Dialect="xsd:anyURI"> 
        /bankTransfer[value %gt; 1,000,000]
      </wsnt:MessageContent> |
      {any} *
    ] *
  </wsnt:Filter> ?
  <wsnt:InitialTerminationTime> 
    [xsd:dateTime | xsd:duration]
  </wsnt:InitialTerminationTime> ?
  <wsnt:SubscriptionPolicy>
    [ <wsnt:UseRaw/> |
      {any}
    ] *
  </wsnt:SubscriptionPolicy> ?
  {any}*
</wsnt:Subscribe>

WS-Notification サービスはサブスクリプションとそのフィルターを保管します。

もう 1 つの WS-Notification アプリケーションは、メッセージ本体に次の情報が含まれている通知をパブリッシュします。

<bankTransfer origin="123456 87654321" target="224466 88664422">
  <originName>IBM Corporation</originName>
  <targetName>Matt Roberts</targetName>
  <date>02/02/2006</date>
  <value currency="USD">100,000,000</value>
</bankTransfer>

アプリケーション・サーバー内の WS-Notification サービスは、このパブリケーションを直前のサブスクリプションに突き合わせて、 サブスクリプションで指定されているコンシューマーに通知を送信します。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_task_adev_xpath
ファイル名:tjwsn_task_adev_xpath.html