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.

Vous pouvez utiliser des sélecteurs XPath pour filtrer les messages d'un sujet donné à l'aide d'une expression booléenne évaluée pour le contenu du message XML du corps du message. Par exemple, un abonné à un système de publication et d'abonnement reposant sur des sujets relatifs aux opérations sur actions peut utiliser des sélecteurs XPath afin de spécifier des contraintes simultanément pour trois attributs de message :
  • le nom de l'émission,
  • le prix,
  • le volume des actions.
L'instruction booléenne résultante peut ressembler à :
(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..

Remarque : Si vos applications abonnées utilisent le filtrage de contenu des messages et sont codées pour spécifier le domaine de sélecteur XPath version 1.0, elles peuvent également filtrer les publications d'autres fournisseurs WS-Notification dont le type JMS est TextMessage ou BytesMessage. Pour plus d'informations sur ces types de message JMS, voir Topologie de WS-Notification comme point d'entrée ou de sortie vers le bus d'intégration de services.

Pour filtrer le contenu des messages des publications en utilisant des sélecteurs XPath, procédez comme suit :

Procédure

  1. Créez une application qui s'abonne à un consommateur WS-Notification.
  2. 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.
  3. Codez le traitement des erreurs dans le cas où le filtre n'est pas valide.
  4. 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.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_task_adev_xpath
Nom du fichier : tjwsn_task_adev_xpath.html