TryCatch 노드에서 예외 포착

예외가 입력 노드로 리턴되기 전에 메시지 플로우를 설계하여 예외를 포착할 수 있습니다. 단일 플로우 내에서 하나 이상의 TryCatch 노드를 포함시켜 노드 순서에 대한 단일 실패 지점을 제공할 수 있습니다. 이 기술을 사용하면 특정 오류 처리 및 복구를 제공할 수 있습니다.

TryCatch 노드는 어떠한 방법으로도 메시지를 처리하지 않으며, 이는 메시지 플로우의 결정 지점만을 표시하는 것입니다. TryCatch 노드가 메시지를 수신할 경우 메시지를 try 터미널로 전달합니다. 브로커는 해당 터미널에 연결된 노드 순서로 제어를 전달합니다(try 플로우).

Try 플로우에서 예외가 전달되는 경우 브로커가 제어를 TryCatch 노드로 리턴시킵니다. 노드는 예외 목록(ExceptionList)의 현재 컨텐츠를 로컬 오류 로그에 쓰고 현재 예외 정보를 ExceptionList에 쓰며 이전 정보가 저장되어 있을 경우 이를 덮어씁니다.

이제 노드가 터미널에 연결된 노드 순서로 메시지를 전달합니다(catch 플로우). 전달된 메시지 트리의 컨텐츠는 TryCatch 노드가 처음으로 수신할 때 트리 컨텐츠가 되는 try 터미널로 전달된 컨텐츠와 동일합니다. 이 컨텐츠는 예외 목록에 작성한 새 예외 정보를 사용하여 이 트리를 개선합니다. 메시지 트리에서 try 플로우의 노드 수정이나 추가는 catch 플로우로 전달된 메시지 트리에 표시되지 않습니다.

하지만 외부 데이터베이스의 갱신사항이 포함된 처리를 try 플로우가 완료한 경우에는 갱신사항이 손실되지 않습니다. 갱신사항은 catch 플로우, 그리고 데이터베이스와 상호작용하는 개별 노드 및 메시지 플로우의 구성에서 갱신사항을 확약 또는 롤백할지에 대한 결정에 의해 메시지가 처리되는 동안 지속됩니다. 설정한 구성으로 인해 갱신사항이 확약되는 경우, catch 플로우에 변경사항을 롤백하는 논리를 포함시켜야 합니다.

구성에 대한 옵션을 검토하려면 통합된 메시지 플로우에 대한 노드 구성을 참조하십시오.

다음의 경우 브로커가 제어를 메시지 플로우의 다음 포착 지점으로 리턴시킵니다(다른 TryCatch 노드가 될 수도 있지만 마지막의 경우에는 입력 노드에 항상 있음).

아래의 예에는 플로우를 구성하여 입력 노드에서 예외를 포착하는 방법이 표시되어 있습니다. 오류를 레코드하도록 MQInput 노드의 catch 터미널이 Trace 노드에 연결되어 있습니다.

이 메시지 플로우에는 MQInput 노드, Compute 노드 및 MQOutput 노드가 있습니다. MQInput 노드의 catch 터미널이 Trace 노드에 연결되어 있습니다.

아래의 예에서 메시지 플로우에는 별도의 처리 플로우 두 개가 Filter 노드의 true 및 false 터미널에 연결되어 있습니다. TryCatch 노드는 메시지가 취할 수 있는 두 개의 각 라우트에 포함되어 있습니다. 두 TryCatch 터미널의 catch 터미널이 공용 오류 처리 서브플로우에 연결되어 있습니다.

이 메시지 플로우의 경우 메시지의 값을 테스트하기 위해 코딩된 Filter 노드가 MQInput 노드 뒤에 옵니다. TryCatch 노드가 Filter 노드의 true 터미널에 연결되어 있고 try 터미널이 MQOutput 터미널 앞의 Compute 노드에 연결되어 있습니다. Catch 터미널이 공용 오류 처리 루틴을 제공하는 error1이라는 서브플로우에 연결되어 있습니다. 두 번째 TryCatch 터미널이 Filter 노드의 false 터미널에 연결되어 있습니다. Try 및 catch 터미널이 첫 번째 TryCatch 터미널과 동일한 노드 순서에 연결되어 있습니다.

메시지 플로우의 입력 노드에 catch 터미널이 없고(예: Real-timeInput) 플로우의 오류를 처리할 경우 TryCatch 노드를 포함시켜야 합니다. 아래의 예에는 이 오류 처리를 제공하기 위해 플로우를 연결하는 방법이 표시되어 있습니다. 이 예에서 catch 플로우의 Compute 노드에 있는 ESQL을 구성하여 포착된 예외를 조사하고 출력 큐 이름을 동적으로 설정할 수 있습니다.

이 메시지 플로우의 경우 Real-timeInput 노드 뒤에 TryCatch노드가 옵니다. TryCatch 노드의 try 터미널이 normal out 플로우에 연결되어 있으며(Compute 뒤에 Publication) catch 터미널은 catch 플로우에 연결되어 있습니다(Trace, Compute, MQOutput 순서).
관련 개념
메시지 플로우 개요
전개 개요
관련 태스크
서브플로우 사용
메시지 플로우 작성
메시지 플로우 컨텐츠 정의
구성 가능 등록 정보 편집
통합된 메시지 플로우에 대한 노드 구성
집계 플로우의 예외 핸들링
관련 참조
내장 노드
WebSphere MQ Enterprise Transport
WebSphere MQ Mobile Transport
WebSphere MQ Multicast Transport
WebSphere MQ Real-time Transport
WebSphere MQ Telemetry Transport
WebSphere MQ Web Services Transport
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac18880_