过滤发布的消息内容

消费应用程序可使用 XML 路径 (XPath) 选择器来根据每个消息的内容过滤消息,而不是接收有关您已预订的主题的所有消息。. 此基于内容的预订使您能够更灵活地定义要接收的信息的类型,并且您的应用程序不必处理它们自己的过滤。因为不会无谓地将无关的消息从服务器发送到应用程序,所以改进了性能。

关于此任务

WS-Notification 发布和预订消息传递模型是基于主题的。每个发布被划分为属于某个固定主题集。发布者使用主题名称标记每个发布,使用者预订针对特定主题的所有发布。例如,股票交易通知系统可能会对每个股票定义主题:发布者公开使用相应股票作为主题名称标记的信息,订户预订有关某些股票的信息。

可使用 XPath 选择器通过使用针对消息主体的 XML 消息内容求值的布尔表达式,以针对特定主题过滤消息。例如,股票交易的基于主题的发布和预订系统的订户可能使用 XPath 选择器来同时指定针对三个消息属性的约束:
  • 股票名称
  • 价格
  • 股票份额
生成的布尔语句可能如下所示:
(issue="IBM") and (price<120) and (volume>1000)

您使用 XML Path (XPath) 语言 V1.0编写预订应用程序中的 XPath 1.0 消息内容过滤器。

注: 如果订户应用程序使用消息内容过滤,并且这些应用程序编写为指定 XPath V1.0 SelectorDomain,那么它们还可过滤 JMS TextMessage 或 BytesMessage 类型的其他 WS-Notification 提供程序中的发布。有关这些 JMS 消息类型的更多信息,请参阅作为服务集成总线的入口点或出口点的 WS-Notification 的拓扑

要使用 XPath 选择器过滤发布的消息内容,请完成下列步骤。

过程

  1. 创建预订 WS-Notification 使用者的新应用程序。
  2. 在预订应用程序中编写 XPath 消息内容过滤器。 有关执行此任务的示例代码,请参阅示例:预订 WS-Notification 使用者。有关消息内容过滤器用法的示例,请参阅本任务结尾的示例。
  3. 编写用于过滤器无效的案例的错误处理。
  4. 调用该应用程序。

示例

此示例 XML 代码演示如何使用 XPath 选择器来过滤消息内容。在本示例中,由 NotificationConsumer 应用程序表示的企业想要在银行转帐金额超过 $1,000,000 时得到通知。在以下 WS-Notification 预订消息中,监视应用程序代表指定有效 XPath V1.0 消息内容过滤器的 NotificationConsumer 进行预订:

<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