Beispiel eines Nachrichtenflusses, der Telemetrie-Clients unterstützt

Dieser Beispielnachrichtenfluss enthält zwei SCADAInput-Knoten, die so konfiguriert sind, dass sie auf verschiedenen TCP/IP-Ports empfangsbereit sind. Wenn eine Nachricht fehlerfrei empfangen wird, gibt sie der Eingabeknoten an einen Rechenknoten weiter, der den Inhalt der Eingabenachricht bearbeitet und eine Reihe von Ausgabenachrichten generiert. Der Rechenknoten gibt die Ausgabenachrichten an einen Veröffentlichungsknoten weiter, der sie für registrierte Teilnehmer veröffentlicht, die das WebSphere MQ-Protokoll verwenden. Fehler im Nachrichtenfluss werden an einen MQOutput-Knoten weitergegeben, der die Fehlermeldungen in einer Warteschlange protokolliert, die zu einem späteren Zeitpunkt verarbeitet wird.

Die Telemetrie-Clients generieren Ereignisse, beispielsweise um eine Statusänderung anzuzeigen oder um ihre Aktivität zu bestätigen. Die Clients sind so programmiert, dass sie Ereignisse stapeln und sie alle 15 Minuten an den Broker senden. Der Nachrichtenfluss ist so konzipiert, dass er die einzelnen Ereignisnachrichten aus der Stapelnachricht extrahiert und sie veröffentlicht.

Die folgende Abbildung zeigt einen Nachrichtenfluss, der eine Nachricht von Telemetrieclients empfängt. Sein Inhalt wird im Text beschrieben.

Der Rechenknoten wurde mit ESQL konfiguriert, die die gestapelte Eingabenachricht in einzelne Ereignisnachrichten trennt. Eine WHILE-Schleife iteriert über jede Nachricht im Stapel. Der MQMD wird aus der Eingabenachricht in jede Ausgabenachricht kopiert. Relevante Felder werden aus der Eingabebaumstruktur in die Ausgabebaumstruktur kopiert. Jede Ausgabenachricht ist eine JMSText-Nachricht, die erstellt wird, indem Sie die Benutzereigenschaften im Benutzerordner im MQRFH2-Header festlegen. Alle Nachrichten werden von einer PROPAGATE-Anweisung an den Veröffentlichungsknoten übermittelt.

Nachfolgend sehen Sie ein Beispiel einer Eingabestapelnachricht mit zwei Ereignissen:

<?xml version="1.0" encoding="UTF-8"?>
<!-- bearbeitet von Mary Bright -->
<events d_tstamp="20040417103118">
  <StateChange topic="LCUnit/12345/StateChange" 
    d_tstamp="20040417104439" i_state="1" i_old_state="0">
    <![CDATA[Status wird von 'Starting' in 'Payload' geändert, da
    'die Systemstartroutine beendet ist']]&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>

Das ESQL-Modul, das Nachrichten dieses Format verarbeitet, wird nachfolgend dargestellt:

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;

Der Nachrichtenfluss hat zwei Empfangsknoten, um die Möglichkeit der Nachrichtenbehandlung zu erhöhen. Sie können beliebig viele Empfangsknoten verwenden. Zudem haben Sie die Möglichkeit, die Nachrichtenflusseigenschaft Zusätzliche Instanzen zu ändern, um die Anzahl der Nachrichtenflussprozesse zu erhöhen. Wenn Sie mehrere Hundert Clients verwenden, müssen Sie unter Umständen ein hohes Nachrichtenaufkommen auf zwei oder mehr Brokern bearbeiten. Verwenden Sie eine oder mehrere dieser Methoden, um einen annehmbaren Grad der Nachrichtenverarbeitung zu finden.

Dieses Beispiel zeigt nur eine Möglichkeit, mit der Nachrichten von Telemetrie-Clients bearbeitet werden können. Ändern Sie diesen Nachrichtenfluss oder erstellen Sie einen neuen, um Ihre eigenen Telemetrieanforderungen zu erfüllen.

Zugehörige Konzepte
WebSphere MQ Telemetry Transport
Nachrichtenflüsse - Übersicht
Zugehörige Tasks
Nachrichtenflüsse entwickeln
Implementieren
Zugehörige Verweise
Integrierte Knoten
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac23520_