Telemetry 클라이언트를 지원하기 위한 메시지 플로우 예

이 메시지 플로우 예에는 다른 TCP/IP 포트에서 대기하도록 구성된 두 개의 SCADAInput 노드가 포함되어 있습니다. 오류 없이 메시지를 수신할 경우, 입력 노드는 입력 메시지 컨텐츠를 조작하고 여러 출력 메시지를 생성하는 Compute 노드로 메시지를 전달합니다. Compute 노드는 WebSphere MQ 프로토콜을 사용하는 등록된 subscriber에 메시지를 공개하는 Publication 노드로 출력 메시지를 전달합니다. 플로우의 오류는 MQOutput 노드로 전달됩니다. 이 노드는 나중에 처리하기 위해 큐에 오류 메시지를 기록합니다.

Telemetry 클라이언트는 이벤트(예를 들어, 상태 변경을 표시하거나 계속 활성 상태임을 확인하기 위한)를 생성합니다. 클라이언트는 이벤트를 배치 처리하도록 프로그래밍되어 있으며 이벤트를 15분마다 브로커에 송신합니다. 메시지 플로우는 배치 메시지에서 각각의 이벤트 메시지를 추출하고 이 메시지를 공개하도록 설계되어 있습니다.

다음 다이어그램은
Telemetry 클라이언트로부터 메시지를 수신하는 메시지 플로우를 보여줍니다. 컨텐츠는
텍스트에 설명되어 있습니다.

Compute 노드는 배치 처리된 입력 메시지를 별도의 이벤트 메시지로 분할하는 ESQL을 사용하여 구성되었습니다. WHILE 루프는 배치에 있는 메시지마다 반복됩니다. MQMD는 입력 메시지에서 각 출력 메시지로 복사됩니다. 관련 필드는 입력 트리에서 출력 트리로 복사됩니다. 각 출력 메시지는 MQRFH2 헤더의 usr 폴더에서 사용자 등록 정보를 설정하여 빌드하는 JMSText 메시지입니다. 각 메시지는 PROPAGATE 문에 의해 Publication 노드로 전달됩니다.

다음은 두 개의 이벤트를 포함하는 입력 배치 메시지 예입니다.

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

이 형식의 메시지를 처리하는 ESQL 모듈이 아래에 표시되어 있습니다.

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;

메시지 플로우는 메시지 핸들링 기능을 높이기 위해 두 개의 입력 노드를 가지고 있습니다. 개수에 관계없이 입력 노드를 사용할 수 있습니다. 또한 메시지 플로우 등록 정보 추가 인스턴스를 변경하여 메시지 플로우에 서비스를 제공하는 프로세스 수를 늘릴 수 있습니다. 방대한 클라이언트가 있으면 두 개 이상의 브로커에 대한 높은 메시지 로드를 핸들링해야 합니다. 다음 기술 중 하나 이상을 사용하여 승인 가능한 레벨의 메시지 처리 방식을 찾도록 하십시오.

이 예는 Telemetry 클라이언트 메시지를 핸들링할 수 있는 방법만 보여줍니다. 이 메시지 플로우를 변경하거나 새 메시지 플로우를 작성하여 해당되는 Telemetry 요구사항을 충족하도록 하십시오.

관련 개념
WebSphere MQ Telemetry Transport
메시지 플로우 개요
관련 작업
메시지 플로우 개발
전개
관련 참조
내장 노드
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2005 마지막 갱신 날짜: 11/07/2005
ac23520_