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.
- nombre de la emisión
- precio
- volumen de acciones
(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..
Para filtrar el contenido de mensajes de publicaciones utilizando selectores XPath, efectúe los pasos siguientes.
Procedimiento
- Cree una nueva aplicación que suscriba un consumidor WS-Notification.
- 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.
- Manejo de errores en el código cuando el filtro no es válido.
- 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.