Flujo de mensajes de ejemplo para soportar clientes de telemetría

Este flujo de mensajes de ejemplo incluye dos nodos SCADAInput configurados para escuchar en puertos TCP/IP diferentes. Cuando se recibe un mensaje sin errores, el nodo de entrada lo propaga a un nodo Compute que manipula el contenido de mensaje de entrada y genera diversos mensajes de salida. El nodo Compute propaga los mensajes de salida a un nodo Publication que los publica en los suscriptores registrados que utilizan el protocolo de WebSphere MQ. Los errores del flujo se propagan a un nodo MQOutput, que registra los mensajes de error en una cola que se deberá procesar posteriormente.

Los clientes de telemetría generan sucesos, por ejemplo para indicar un cambio de estado o para confirmar que aún están activos. Los clientes están programados para procesar por lotes los sucesos y enviarlos al intermediario cada 15 minutos. El flujo de mensajes está diseñado para extraer mensajes de sucesos individuales del mensaje de proceso por lotes y publicarlos.

Este diagrama muestra un flujo de mensajes que recibe un mensaje de los clientes de telemetría. El contenido se describe en el texto.

El nodo Compute se ha configurado con ESQL que divide el mensaje de entrada procesado por lotes en mensajes de sucesos individuales. Un bucle WHILE se repite en cada mensaje del proceso por lotes. El MQMD se copia del mensaje de entrada en cada mensaje de salida. Los campos pertinentes se copian del árbol de entrada en el árbol de salida. Cada mensaje de salida es un mensaje JMSText que se crea estableciendo las propiedades de usuario en la carpeta usr de la cabecera MQRFH2. Una sentencia PROPAGATE pasa cada mensaje al nodo Publication.

A continuación se muestra un mensaje de proceso por lotes de entrada de ejemplo que contiene dos sucesos:

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

A continuación se muestra el módulo ESQL que procesa los mensajes de este formato:

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;

El flujo de mensajes tiene dos nodos de entrada para aumentar la posibilidad de manejo de mensajes. Puede utilizar cualquier número de nodos de entrada. También puede cambiar la propiedad de flujo de mensajes Instancias adicionales para aumentar el número de procesos que dan servicio al flujo de mensajes. Si tiene varios centenares de clientes, es posible que tenga que manejar una alta carga de mensajes en dos o más intermediarios. Utilice una o varias de estas técnicas para encontrar un nivel aceptable de proceso de mensajes.

Este ejemplo sólo muestra un modo en que se pueden manejar los mensajes de cliente de telemetría. Cambie este flujo de mensajes o cree uno nuevo para satisfacer los requisitos de telemetría propios.

Conceptos relacionados
WebSphere MQ Telemetry Transport
Visión general de flujos de mensajes
Tareas relacionadas
Desarrollar flujos de mensajes
Despliegue
Referencia relacionada
Nodos incorporados
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac23520_