Filtrage du contenu des messages des publications
Au lieu de recevoir tous les messages d'un sujet auquel vous êtes abonné, l'application destinataire peut utiliser des sélecteurs XML Path (XPath) pour filtrer les messages en fonction de leur contenu. Cet abonnement défini en fonction du contenu offre une plus grande souplesse pour déterminer le type d'informations que vous souhaitez recevoir et permet à vos applications de ne pas avoir à gérer leur propre filtrage. Les performances sont améliorées car les messages inappropriés ne sont pas envoyés inutilement du serveur à l'application.
Pourquoi et quand exécuter cette tâche
Le modèle de messagerie par publication et abonnement WS-Notification repose sur des sujets. Chaque publication est classée comme appartenant à l'un des ensembles de sujets définis. Les diffuseurs de publications attribuent un nom de sujet à chaque publication et les consommateurs s'abonnent à toutes les publications sur un sujet particulier. Par exemple, un système de notification d'opérations sur actions peut définir un sujet pour chaque émission : les diffuseurs de publications peuvent poster des informations dont le titre de sujet reflète l'émission et les abonnés peuvent souscrire aux informations relatives à certaines émissions.
- le nom de l'émission,
- le prix,
- le volume des actions.
(issue="IBM") and (price<120) and (volume>1000)
Vous codez les filtres de contenu de message XPath dans les applications abonnées en utilisant XML Path (XPath) language, Version 1.0..
Pour filtrer le contenu des messages des publications en utilisant des sélecteurs XPath, procédez comme suit :
Procédure
- Créez une application qui s'abonne à un consommateur WS-Notification.
- Codez un filtre de contenu de message XPath dans l'application abonnée. Vous trouverez un exemple de code dans Exemple : inscription d'un destinataire WS-Notification. Vous trouverez un exemple d'utilisation de filtre de contenu des messages à la fin de cette tâche.
- Codez le traitement des erreurs dans le cas où le filtre n'est pas valide.
- Appelez l'application.
Exemple
Cet exemple de code XML montre le filtrage du contenu des messages à l'aide de sélecteurs XPath. Dans cet exemple, une entreprise représentée par l'application NotificationConsumer veut recevoir des notifications lorsque des virements bancaires de plus de $1,000,000 sont effectués. L'application de surveillance s'abonne au nom de l'application NotificationConsumer en indiquant un filtre du contenu des messages XPath version 1.0 valide 1.0 dans le message d'abonnement 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>
Le service WS-Notification stocke l'abonnement et son filtre.
Une autre application WS-Notification publie ensuite une notification dans laquelle le corps du message contient les informations suivantes :
<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>
Le service WS-Notification du serveur d'applications compare cette publication à l'abonnement antérieur et transmet la notification au destinataire indiqué dans l'abonnement.