Um Fluxo de Mensagens de Exemplo para Suportar os Clientes de Telemetria

Esse fluxo de mensagens de exemplo inclui dois nós SCADAInput configurados para atender em diferentes portas TCP/IP. Quando uma mensagem é recebida sem erro, o nó input a propaga a um nó Compute que manipula o conteúdo da mensagem de entrada e gera um número de mensagens de saída. O nó Compute propaga as mensagens de saída a um nó Publication, que as publica para os assinantes registrados que utilizam o protocolo WebSphere MQ. Os erros no fluxo são propagados a um nó MQOutput, que registra as mensagens de erro em uma fila a ser processada posteriormente.

Os clientes de Telemetria geram eventos, por exemplo, para indicar uma alteração de estado ou para confirmar que já estão ativos. Os clientes são programados a fazer batch de eventos e enviá-los ao intermediário a cada 15 minutos. O fluxo de mensagens é projetado para extrair mensagens de eventos individuais da mensagem em batch e publicá-las.

Este diagrama mostra um fluxo de mensagens que recebe mensagens de clientes de Telemetria. Seu conteúdo é descrito no texto.

O nó Compute foi configurado com o ESQL, que divide a mensagem de entrada em batch nas mensagens de evento individuais. Um loop WHILE interage sobre cada mensagem no batch. O MQMD é copiado da mensagem de entrada para cada mensagem de saída. Os campos relevantes são copiados da árvore de entrada para a árvore de saída. Cada mensagem de saída é uma mensagem JMSText, construída pela configuração das Propriedades do Usuário na pasta usr no cabeçalho MQRFH2. Cada mensagem é transmitida ao nó Publication por uma instrução PROPAGATE.

Aqui está uma mensagem de entrada em batch de exemplo que contém dois eventos:

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited by Mary Bright -->
<events d_tstamp="20040417103118">
  <StateChange topic="LCUnit/12345/StateChange"
    d_tstamp="20040417104439" i_state="1" i_old_state="0">
    <![CDATA[Changing state from 'Starting' to 'Payload' because
    'The startup routine is complete']]&gt;
  </StateChange>
  <Heartbeat topic="LCUnit/12345/Heartbeat"
    d_tstamp="20040417105126" i_state="1">
    <d_tstamp>20040417104948</d_tstamp>
    <i_state>1</i_state>
  </Heartbeat>
</events>

O módulo ESQL que processa mensagens desse formato é mostrado abaixo:

CREATE COMPUTE MODULE messageflow_Compute
   CREATE FUNCTION Main() RETURNS BOOLEAN
   BEGIN
	DECLARE BatchTime CHAR;
	SET BatchTime = InputRoot.XML.events.d_tstamp;
	DECLARE Count INTEGER CARDINALITY(InputRoot.XML.events.*[]);
	DECLARE I INTEGER 2;

	WHILE I <= Count DO
		SET OutputRoot.Properties.MessageDomain = 'XML';
SET OutputRoot.XML = NULL;
		SET OutputRoot.MQMD = InputRoot.MQMD;	
		SET OutputRoot.MQRFH2.CodedCharSetId = 1208;
		SET OutputRoot.MQRFH2.(MQRFH2.Field)Format = 'MQSTR   ';
SET OutputRoot.MQRFH2.(MQRFH2.Field)NameValueCCSID = 1208;
		SET OutputRoot.MQRFH2.psc.Topic = InputRoot.XML.events.*[I].topic;
		SET OutputRoot.MQRFH2.usr.*[] = InputRoot.XML.events.*[I].(XML.Attribute)*[];
		SET OutputRoot.MQRFH2.usr.b_time = BatchTime;
		SET OutputRoot.XML.Body.Text = InputRoot.XML.events.*[I].(XML.CDataSection)*'
  SET I = I + 1;		PROPAGATE;
	END WHILE;

	RETURN FALSE;
   END;
END MODULE;

O fluxo de mensagens possui dois nós de entrada para aumentar o recurso de manipulação de mensagens. É possível utilizar qualquer número de nós de entrada. É possível também alterar a propriedade do fluxo de mensagens Instâncias Adicionais para aumentar o número de processos que servem o fluxo de mensagens. Se possuir centenas de clientes, é possível que seja necessário manipular uma alta carga de mensagens em dois ou mais intermediários. Utilize uma ou mais dessas técnicas para localizar um nível aceitável de processamento de mensagens.

Esse exemplo mostra apenas uma maneira na qual as mensagens dos clientes de Telemetria podem ser manipuladas. Altere esse fluxo de mensagens ou crie um novo para corresponder aos requisitos de Telemetria.

Conceitos relacionados
WebSphere MQ Telemetry Transport
Visão Geral de Fluxos de Mensagens
Tarefas relacionadas
Desenvolvendo Fluxos de Mensagens
Implementando
Referências relacionadas
Nós Internos
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac23520_