Filtrando o Conteúdo da Mensagem de Publicações

Em vez de receber todas as mensagens em um tópico do qual você é assinante, o seu aplicativo de consumo pode utilizar seletores de Caminho XML (XPath) para filtrar as mensagens com base no conteúdo de cada mensagem. Esta assinatura baseada em conteúdofornece maior flexibilidade na definição do tipo de informações que você deseja receber e seus aplicativos não precisam manipular suas próprias filtragens. O desempenho é melhorado porque as mensagens que não são relevantes não são enviadas de modo desnecessário do servidor para o aplicativo.

Sobre Esta Tarefa

O modelo de sistema de mensagens de publicação e assinatura WS-Notification baseia-se no tópico. Cada publicação é classificada como pertencente a um de um conjunto fixo de tópicos. Os publicadores rotulam cada publicação com um nome de tópico e os consumidores assinam todas as publicações sobre um determinado tópico. Por exemplo, um sistema de notificação do mercado de ações poderá definir um tópico para cada emissão: os publicadores postam informações rotuladas com a emissão apropriada, como o nome do tópico, e os assinantes assinam as informações relacionadas a uma emissão.

É possível utilizar seletores XPath para filtrar as mensagens de um determinado tópico, utilizando uma expressão Booleana avaliada sobre o conteúdo da mensagem XML do corpo da mensagem. Por exemplo, um assinante de um sistema de publicação e assinatura com base no tópico para o mercado de ações poderá usar seletores de XPath para especificar limitadores em relação a três atributos de mensagens ao mesmo tempo:
  • nome da emissão
  • preço
  • volume de ações
A instrução Booleana resultante poderá ser a seguinte:
(issue="IBM") and (price<120) and (volume>1000)

Você codifica seus filtros de conteúdo de mensagem XPath 1.0 nos aplicativos de assinatura usando a linguagem XML Path (XPath), Versão 1.0..

Nota: Se os aplicativos de assinante utilizarem filtragem de conteúdo de mensagem, e estiverem codificados para especificar XPath Versão 1.0 SelectorDomain, eles poderão também filtrar as publicações de outros provedores do WS-Notification que sejam do tipo JMS TextMessage ou BytesMessage. Para obter informações adicionais sobre esses tipos de mensagem JMS, consulte Topologia para WS-Notification como um ponto de entrada ou de saída para o barramento de integração de serviços.

Para filtrar o conteúdo de menagens de publicações usando seletores XPath, conclua as etapas a seguir.

Procedimento

  1. Crie um novo aplicativo que assina um consumidor do WS-Notification.
  2. Codifique um filtro de conteúdo da mensagem XPath no aplicativo de assinatura. Para obter um exemplo do código para fazer isso, consulte Exemplo: Efetuando Assinatura de um Consumidor do WS-Notification. Para obter um exemplo do uso do filtro de conteúdo de mensagens, consulte o exemplo no final desta tarefa.
  3. Codifique a manipulação de erros para casos em que o filtro não é válido.
  4. Chame o aplicativo.

Exemplo

Este código XML de exemplo ilustra a filtragem do conteúdo de mensagens usando seletores XPath. Neste exemplo, uma empresa, representada por um aplicativo NotificationConsumer, deseja ser notificada de transferências bancárias acima de $1.000.000. O aplicativo de monitoramento assina em nome de NotificationConsumer especificando um filtro de conteúdo de mensagem XPath Versão 1.0 válido na seguinte mensagem de assinatura 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>

O serviço WS-Notification armazena a assinatura e seu filtro.

Um outro aplicativo WS-Notification, em seguida, publica uma notificação na qual o corpo da mensagem contém as seguintes informações:

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

O serviço WS-Notification no servidor de aplicativos corresponde esta publicação com a assinatura anterior e entrega a notificação ao consumidor especificado na assinatura.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjwsn_task_adev_xpath
Nome do arquivo: tjwsn_task_adev_xpath.html