過濾發佈的訊息內容

您的消費端應用程式可以利用 XML 路徑 (XPath) 選取器,根據每個訊息的內容來過濾訊息,而不是接收您訂閱之主題的所有訊息. 這個內容型訂閱在定義您想要接收的資訊類型時,可提供較大的彈性,您的應用程式不需要處理本身的過濾。這樣可以增進效能,因為不相關的訊息不必從伺服器傳送到應用程式。

關於這項作業

WS-Notification 發佈和訂閱傳訊模型是以主題為基礎。 每一項發佈都分類為屬於一組固定主題的其中一個主題。 發佈者用主題名稱來標示每一項發佈,消費者訂閱特定主題的所有發佈。 例如,股票交易通知系統可能會對每項發行各定義一個主題:發佈者公佈資訊,且以適當的發行作為主題名稱來加以標示,訂閱者訂閱某項發行的相關資訊。

您可以利用 XPath 選取器,以對訊息內文的 XML 訊息內容進行評估的布林表示式,來過濾給定主題的訊息,例如,股票交易的主題型發佈和訂閱系統的訂閱者,可利用 XPath 選取器,同時針對三個訊息屬性來指定限制:
  • 發行名稱
  • 價格
  • 股份數量
產生的布林陳述式可能如下:
(issue="IBM") and (price<120) and (volume>1000)

您利用 XML 路徑 (XPath) 語言 1.0 版,在訂閱端應用程式中,編寫 XPath 1.0 訊息內容過濾器的程式碼。

註: 如果您的訂閱者應用程式使用訊息內容過濾,且編寫了指定 XPath 1.0 版 SelectorDomain 的程式碼,它們也可以對 JMS TextMessage 或 BytesMessage 類型的其他 WS-Notification 提供者的發佈進行過濾。 如需這些 JMS 訊息類型的相關資訊,請參閱Topology for WS-Notification as an entry or exit point to the service integration bus

如果要利用 XPath 選取器來過濾發佈的訊息內容,請完成下列步驟。

程序

  1. 建立訂閱 WS-Notification 消費者的新應用程式。
  2. 在訂閱端應用程式中,編寫 XPath 訊息內容過濾器的程式碼。 如需執行這個動作的程式碼範例,請參閱Example: Subscribing a WS-Notification consumer。 如需訊息內容過濾器用法的範例,請參閱這個作業結尾的範例。
  3. 編寫過濾器無效案例的錯誤處理程式碼。
  4. 呼叫應用程式。

範例

這個範例 XML 程式碼說明利用 XPath 選取器來進行的訊息內容過濾。 在這個範例中,NotificationConsumer 應用程式所代表的企業想要接收超出 $1,000,000 的銀行轉帳通知。 監視應用程式代表 NotificationConsumer 進行訂閱,在下列 WS-Notification 訂閱訊息中,指定了有效的 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 服務會將訂閱及其過濾器儲存起來。

之後,另一個 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