집계 플로우를 사용할 때, 예외가 발생할 수 있습니다. 이 주제에서는 이러한 상황을 처리하는 방법에 대해 설명합니다.
시작하기 전에
이 작업을 완료하려면 먼저 다음 작업을 완료해야 합니다.
AggregateReply 노드의 다운스트림에서 오류가 감지된 경우, 브로커는 예외를 전달합니다. 메시지 플로우의 다른 노드는 ESQL THROW문을 사용하여 예외를 전달할 수도 있습니다. 이러한 경우 예외가 발생하면 다음 두 장소 중 하나에서 발생합니다.
다음 표에는 이벤트와 AggregateReply 노드의 다운스트림에 예외가 발생한 상황이 나열되어 있습니다.
이벤트 | 전달된 메시지 | 출력 터미널 | 예외가 발생한 장소 |
---|---|---|---|
예상된 응답이 입력 노드에 도착하여 AggregateReply 노드의 터미널에 전달되었습니다. 이 응답은 집계를 완료하는 데 필요한 마지막 응답입니다. | 모든 응답을 포함하는 집계 응답 메시지 | Out | 입력 노드 |
예상치 못한 응답이 입력 노드에 도착하여 AggregateReply 노드에 전달되었습니다. 올바른 응답으로 인식되지 않으며, 알 수 없는 메시지 시간 종료 등록 정보가 0으로 설정됩니다. | 수신된 메시지 | Unknown | 입력 노드 |
집계의 모든 응답이 아직 다 도착하지 않았으므로 시간 종료가 발생합니다. | 수신된 모든 응답을 포함하는 집계 응답 메시지 | Timeout | AggregateReply 노드 |
보유된 메시지가 올바른 응답으로 식별되지 않으므로 알 수 없는 시간 종료가 발생합니다. | 보유된 메시지 | Unknown | AggregateReply 노드 |
마지막 응답이 도착한 시간이 아닌 시간에 완료된 집계가 발견됩니다. | 모든 응답을 포함하는 집계 응답 메시지 | Out | AggregateReply 노드 |
집계 플로우에서 발생하는 오류를 핸들링하려면, 메시지 플로우에 있는 이러한 노드 각각의 모든 인스턴스에서 이러한 예외를 발견해야 합니다. 그러기 위해서는 다음을 수행하십시오.
아래의 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 모드 등록 정보 또한 예외를 포함하는 값에 설정해야 합니다.