Para customizar eventos após um fluxo de mensagens ter sido implementado, mas sem reimplementar o fluxo, use um serviço configurável do perfil de monitoramento. Usando este serviço, é possível aplicar um perfil de monitoramento a um ou mais fluxos de mensagens.
Aqui está uma estrutura de tópicos do perfil de monitoramento que contém uma única origem de eventos para ilustrar a estrutura:
<p:monitoringProfile
xmlns:p="http://www.ibm.com/xmlns/prod/websphere/messagebroker/6.1.0.3/monitoring/profile" p:version="2.0">
<p:eventSource p:enabled="true" p:eventSourceAddress="SOAPInput.transaction.Start">
<p:eventPointDataQuery>
<p:eventIdentity>
<p:eventName p:literal="" p:queryText=""/>
</p:eventIdentity>
<p:eventCorrelation>
<p:localTransactionId p:queryText="" p:sourceOfId="automatic"/>
<p:parentTransactionId p:queryText="" p:sourceOfId="automatic"/>
<p:globalTransactionId p:queryText="" p:sourceOfId="automatic"/>
</p:eventCorrelation>
<p:eventFilter p:queryText="true()"/> <p:eventUOW p:unitOfWork="messageFlow" /> </p:eventPointDataQuery>
<p:applicationDataQuery>
<p:simpleContent p:dataType="boolean" p:name="" p:targetNamespace="">
<p:valueQuery p:queryText=""/>
</p:simpleContent>
<p:complexContent p:name="" targetNamespace="">
<p:payloadQuery p:queryText=""/>
</p:complexContent>
</p:applicationDataQuery>
<p:bitstreamDataQuery p:bitstreamContent="all" p:encoding="base64Binary"/>
</p:eventSource>
</p:monitoringProfile>
Para ajudá-lo a criar perfis de monitoramento, a amostra a seguir contém um arquivo XML de perfil de monitoramento de estrutura de tópicos e o arquivo de esquema XML do perfil de monitoramento (MonitoringProfile.xsd):
Valide seus perfis de monitoramento com relação ao esquema XML para assegurar que eles estejam corretos.
Você só pode visualizar informações sobre amostras quando usa o centro de informações que está integrado ao WebSphere Message Broker Toolkit ou o centro de informações on-line. Você só poderá executar amostras quando usar o centro de informações que está integrado ao WebSphere Message Broker Toolkit.
As etapas a seguir descrevem como criar um XML do perfil de monitoramento. Siga essas etapas para cada elemento p:eventSource.
Tipo de evento | Endereço de fonte de eventos |
---|---|
Evento de Início da Transação | nodelabel.transaction.Start |
Evento de Fim da Transação | nodelabel.transaction.End |
Evento de Recuperação da Transação | nodelabel.transaction.Rollback |
Evento Terminal | nodelabel.terminal.<Terminal> |
No evento emitido, a cadeia de endereço da origem de eventos é configurada no atributo wmb:eventData/@wmb:eventSourceAddress.
No evento emitido, o nome do evento é configurado no atributo wmb:eventPointData/wmb:eventIdentity/@wmb:eventName .
Se o elemento p:eventName não for fornecido, o @wmb:eventName no evento emitido será padronizado como @p:eventSourceAddress.
Usando essa facilidade, é possível padronizar emissões de eventos em seus requisitos de negócios, filtrando eventos que não correspondam a um conjunto de regras. Isto pode reduzir o número de eventos emitidos e reduzir a carga de trabalho em seu aplicativo de monitoramento.
Este instrumento geralmente é utilizado para comunicar dados de negócios importantes em um evento de negócio. Se o evento contiver o fluxo de bits de entrada, o instrumento também poderá ser utilizado para extrair campos-chave, permitindo que outro aplicativo forneça uma trilha de auditoria ou reenvie as mensagens que falharam.
No evento emitido, os dados extraídos são configurados nos elementos wmb:applicationData/wmb:simpleContent e wmb:applicationData/wmb:complexContent.
No evento emitido, os dados de fluxo extraídos são configurados no elemento wmb:bitstreamData/wmb:bitstream.
Todo evento de monitoramento emitido pode conter até três atributos de correlação. Se nenhuma informação de correlação for especificada no perfil de monitoramento, nenhum atributo de correlação será usado.
Se o evento de início da transação for especificado para ser incluído na unidade de trabalho do fluxo de mensagens, mas o processamento de mensagens falhar e esta unidade de trabalho não for publicada, o evento de início da transação será incluído em uma unidade de trabalho independente. Isto assegura que seu aplicativo de monitoramento receba um par de eventos (início e retrocesso), em vez de receber um evento de retrocesso em isolamento.
Uma transação independente pode ser iniciada somente se a transação principal tiver sido confirmada ou retrocedida. Se a propriedade Contagem de Confirmações do fluxo for maior que um, (Propriedades Configuráveis do Fluxo de Mensagens), ou a propriedade Confirmar por grupo de mensagens estiver configurada (Recebendo Mensagens em um Grupo de Mensagens do WebSphere MQ), os eventos direcionados para a transação independente serão então emitidos fora do ponto de sincronização e será exibida uma mensagem indicando que isto foi feito.
Tipo de Evento | Valores Permitidos |
---|---|
transaction.Start |
|
transaction.End |
|
transaction.Rollback |
|
terminal |
|
Se uma consulta XPath contiver um componente que possui um namespace XML, o XPath contém um prefixo de namespace para ele. Por exemplo, o seguinte XPath se refere a componentes em dois namespace diferentes:
<p:localTransactionId p:sourceOfId="query" p:queryText="$Body/soapenv:Header/wsa:messageID" />
Para que o broker resolva o prefixo de namespace, a URL deste deve também ser fornecida. Forneça um elemento de mapeamento de prefixo para cada namespace:
<p:localTransactionId p:sourceOfId="query" p:queryText="$Body/soapenv:Header/wsa:messageID">
<p:prefixMapping p:prefix="soapenv" p:URI="http://www.w3.org/2003/05/soap-envelope" />
<p:prefixMapping p:prefix="wsa" p:URI="http://www.w3.org/2005/08/addressing" />
</p:localTransactionId>
Perfil de Monitoramento1: Duas fontes de eventos, cada uma fornecendo um nome de evento
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="SOAPInput.transaction.Start">
<p:eventPointDataQuery>
<p:eventIdentity>
<p:eventName p:literal="SOAP start event"/>
</p:eventIdentity>
</p:eventPointDataQuery>
</p:eventSource>
<p:eventSource p:eventSourceAddress="SOAPInput.transaction.End">
<p:eventPointDataQuery>
<p:eventIdentity>
<p:eventName p:literal="SOAP end event"/>
</p:eventIdentity>
</p:eventPointDataQuery>
</p:eventSource>
</p:monitoringProfile>
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="SOAPInput.transaction.Start">
<p:eventPointDataQuery>
<p:eventCorrelation>
<p:localTransactionId p:queryText="$Body/soapenv:Header/wsa:messageID" p:sourceOfId="query">
<p:prefixMapping p:prefix="soapenv" p:URI="http://www.w3.org/2003/05/soap-envelope"/>
<p:prefixMapping p:prefix="wsa" p:URI="http://www.w3.org/2005/08/addressing"/>
</p:localTransactionId>
</p:eventCorrelation>
</p:eventPointDataQuery>
</p:eventSource>
</p:monitoringProfile>
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="MQInput.terminal.out">
<p:applicationDataQuery>
<p:simpleContent p:dataType="integer" p:name="InvoiceNumber">
<p:valueQuery p:queryText="$Body/invoice/invoiceNo"/>
</p:simpleContent>
<p:simpleContent p:dataType="string" p:name="BatchID">
<p:valueQuery p:queryText="$Body/batch/batchNo"/>
</p:simpleContent>
</p:applicationDataQuery>
</p:eventSource>
</p:monitoringProfile>
<p:monitoringProfile p:version="2.0">
<p:eventSource p:eventSourceAddress="MQInput.terminal.out">
<p:bitstreamDataQuery p:bitstreamContent="body" p:encoding="CDATA"/>
</p:eventSource>
</p:monitoringProfile>
A codificação CDATA
não é apropriada para todos os tipos de dados.
Utilize apenas CDATA quando @p:bitstreamContent="body". Não use
CDATA se seus fluxos de bits de mensagens puderem conter caracteres que não sejam permitidos em XML (consulte http://www.w3.org/TR/2006/REC-xml-20060816/#charsets).