집계 플로우의 예외 핸들링

집계 플로우를 사용할 때, 예외가 발생할 수 있습니다. 이 주제에서는 이러한 상황을 처리하는 방법에 대해 설명합니다.

시작하기 전에

이 작업을 완료하려면 먼저 다음 작업을 완료해야 합니다.

예외 처리

AggregateReply 노드의 다운스트림에서 오류가 감지된 경우, 브로커는 예외를 전달합니다. 메시지 플로우의 다른 노드는 ESQL THROW문을 사용하여 예외를 전달할 수도 있습니다. 이러한 경우 예외가 발생하면 다음 두 장소 중 하나에서 발생합니다.

  • 응답이 도착하는 입력 노드
  • AggregateReply 노드

다음 표에는 이벤트와 AggregateReply 노드의 다운스트림에 예외가 발생한 상황이 나열되어 있습니다.

이벤트 전달된 메시지 출력 터미널 예외가 발생한 장소
예상된 응답이 입력 노드에 도착하여 AggregateReply 노드의 터미널에 전달되었습니다. 이 응답은 집계를 완료하는 데 필요한 마지막 응답입니다. 모든 응답을 포함하는 집계 응답 메시지 Out 입력 노드
예상치 못한 응답이 입력 노드에 도착하여 AggregateReply 노드에 전달되었습니다. 올바른 응답으로 인식되지 않으며, 알 수 없는 메시지 시간 종료 등록 정보가 0으로 설정됩니다. 수신된 메시지 Unknown 입력 노드
집계의 모든 응답이 아직 다 도착하지 않았으므로 시간 종료가 발생합니다. 수신된 모든 응답을 포함하는 집계 응답 메시지 Timeout AggregateReply 노드
보유된 메시지가 올바른 응답으로 식별되지 않으므로 알 수 없는 시간 종료가 발생합니다. 보유된 메시지 Unknown AggregateReply 노드
마지막 응답이 도착한 시간이 아닌 시간에 완료된 집계가 발견됩니다. 모든 응답을 포함하는 집계 응답 메시지 Out AggregateReply 노드

집계 플로우에서 발생하는 오류를 핸들링하려면, 메시지 플로우에 있는 이러한 노드 각각의 모든 인스턴스에서 이러한 예외를 발견해야 합니다. 그러기 위해서는 다음을 수행하십시오.

  1. 브로커 응용프로그램 개발 perspective로 전환하십시오.
  2. 작업할 메시지 플로우를 여십시오.
  3. 이러한 예외를 직접 핸들링하려면, 각 입력 및 AggregateReply 노드의 catch 터미널을 발생한 오류를 핸들링하는 노드 순서에 연결하십시오.

    단일화된 접근 방법으로 오류를 핸들링하려면, 이러한 모든 노드의 catch 터미널을 단일 노드 순서에 연결하거나, 하나의 일관성 있는 방식으로 오류를 핸들링하는 서브플로우를 작성한 후 각 catch 터미널에 해당 서브플로우를 연결하십시오.

  4. 브로커가 디폴트 오류 핸들링을 사용하여 이러한 예외를 핸들링하게 하려면 이 노드의 catch 터미널을 연결하지 마십시오.
AggregateReply 노드의 catch 터미널을 연결하고 이 터미널을 통해 전달된 메시지를 나중에 처리할 수 있도록 검색이 가능한 목적지로 출력할 경우 Compute 노드를 catch 플로우에 포함시켜 전송 특정 처리를 제공해야 합니다. 예를 들어 MQOutput 노드에서 WebSphere MQ 큐로 메시지를 넣을 경우 MQMD 헤더를 추가해야 합니다.

아래의 ESQL 예는 MQMD 헤더를 추가하고 AggregateReply 노드에서 수신된 응답을 전달하는 방법을 표시합니다.

-- Add MQMD
SET OutputRoot.MQMD.Version = 2;
.
-- Include consolidated replies in the output message
SET OutputRoot.XML.Data.Parsed = InputRoot.ComIbmAggregateReplyBody;
.

출력 메시지의 예외에 대한 정보를 전달할 경우 Compute 노드의 Compute 모드 등록 정보 또한 예외를 포함하는 값에 설정해야 합니다.

주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac12340_