Filtrado del contenido de mensajes de publicaciones

En lugar de recibir todos los mensajes en un tema al que se ha suscrito, la aplicación consumidora puede utilizar selectores XML Path (XPath) para filtrar los mensajes en base al contenido de cada mensaje. Esta suscripción se basa en el contenido le proporciona una mayor flexibilidad al definir el tipo de información que desea recibir y las aplicaciones no necesitan manejar su propio filtrado. El rendimiento se mejora porque los mensajes que no son relevantes no se envían innecesariamente del servidor a la aplicación.

Acerca de esta tarea

El modelo de mensajería de publicación y suscripción de WS-Notification está basado en temas. Cada publicación se clasifica como si perteneciera a uno de un conjunto fijo de temas. Los editores etiquetan cada publicación con un nombre de tema y los consumidores se suscriben a todas las publicaciones de un tema concreto. Por ejemplo, un sistema de notificaciones de operaciones de bolsa podría definir un tema para cada emisión: los editores publican información etiquetada con la emisión adecuada como nombre de tema y los suscriptores se suscriben a la información que hace referencia a alguna emisión.

Puede utilizar selectores XPath para filtrar mensajes para un tema dado, utilizando una expresión booleana que se evalúa a través del contenido del mensaje XML del cuerpo del mensaje. Por ejemplo, un suscriptor a un sistema de publicación y sustitución basados en temas para las operaciones de bolsa puede utilizar los selectores XPath para especificar limitaciones respecto a tres atributos de mensajes a la vez:
  • nombre de la emisión
  • precio
  • volumen de acciones
Las sentencia booleana resultante podría ser como la siguiente:
(issue="IBM") and (price<120) and (volume>1000)

Puede codificar los filtros de contenido de los mensajes XPath 1.0 en las aplicaciones suscriptoras, mediante el Lenguaje XML Path (XPath), Versión 1.0..

Nota: Si las aplicaciones de suscriptor utilizan el filtro de contenido de mensajes y se han codificado para especificar SelectorDomain de XPath Versión 1.0, también pueden filtrar publicaciones de otros proveedores WS-Notification que sean de tipo TextMessage o BytesMessage de JMS. Para obtener más información sobre estos tipos de mensajes JMS, consulte Topología para WS-Notification como un punto de entrada o salida para el bus de integración de servicios.

Para filtrar el contenido de mensajes de publicaciones utilizando selectores XPath, efectúe los pasos siguientes.

Procedimiento

  1. Cree una nueva aplicación que suscriba un consumidor WS-Notification.
  2. Codifique un filtro de contenido de mensajes XPath en la aplicación suscriptora. Para ver un código de ejemplo para hacerlo, consulte Ejemplo: Cómo suscribir un consumidor de WS-Notification. Para ver un ejemplo del uso del filtro de contenido de mensajes, consulte el ejemplo al final de esta tarea.
  3. Manejo de errores en el código cuando el filtro no es válido.
  4. Invoque la aplicación.

Ejemplo

Este código XML de ejemplo ilustra el filtro de contenido de mensajes utilizando selectores XPath. En este ejemplo, una empresa representada por una aplicación NotificationConsumer, desea que se le notifiquen las transferencias bancarias con un importe superior a $1.000.000. La aplicación de supervisión se suscribe en nombre de NotificationConsumer especificando un filtro de contenido de mensajes válido de XPath Versión 1.0, en el siguiente mensaje de suscripción WS-Notification:

<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>

El servicio WS-Notification almacena la suscripción y su filtro.

A continuación, otra aplicación WS-Notification publica una notificación en la que el cuerpo del mensaje contiene la siguiente información:

<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>

El servicio WS-Notification del servidor de aplicaciones compara esta publicación con la suscripción anterior y entrega la notificación al consumidor especificado en la suscripción.


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_task_adev_xpath
File name: tjwsn_task_adev_xpath.html