브로커는 모든 메시지 플로우에 대한 기본 오류 핸들링을 제공합니다. 기본 처리가 충분하지 않고 특정 오류 조건 및 상황에 대한 응답으로 특정 조치를 취하려는 경우 메시지 플로우를 개선하여 사용자만의 오류 핸들링을 제공할 수 있습니다.
이러한 작업에 사용할 수 있는 옵션은 일부 경우에는 매우 복잡합니다. MQInput 노드는 지속 메시지 및 트랜잭션을 처리하므로 이 노드에 제공되는 옵션은 광범위합니다. 또한 MQInput은 WebSphere MQ의 구성 옵션에 영향을 받습니다.
각각의 오류를 서로 다른 방식으로 핸들링하도록 할 수 있으므로 설명할 고정 프로시저는 없습니다. 이 절에서는 오류 핸들링 원리 및 사용 가능한 옵션에 대한 정보를 제공하고 이 절에서 제공하는 세부사항에 따라 각 상황에 필요한 선택사항의 조합을 결정해야 합니다.
메시지 플로우에서 다음 옵션을 하나 이상 선택할 수 있습니다.
메시지 플로우에 사용자 정의 노드를 포함시키는 경우 이러한 노드에서 오류를 핸들링하는 방법을 이해하려면 노드와 함께 제공된 정보를 참조해야 합니다. 이 절에서는 내장 노드만 설명합니다.
오류 핸들링 방식을 설계할 때, 다음 요인을 고려하십시오.
노드에서 예외가 감지되면 메시지 및 예외 정보가 노드의 failure 터미널로 전달됩니다. 노드에 failure 터미널이 없거나 노드가 연결되어 있지 않으면 브로커는 예외를 전달하고 제어를 입력 노드일 수 있습니다.
또는 MQinput 노드가 내부 오류를 감지한 경우 이 노드의 동작은 약간 다릅니다. failure 터미널이 연결되어 있지 않으면 메시지를 입력 큐의 백아웃 리큐 큐 또는 이 큐가 정의되지 않은 경우 브로커 큐 관리자의 데드-레터 큐에 넣도록 시도합니다.
메시지가 처음으로 노드 외부로(예: Out 터미널에 연결된 노드) 전달된 경우에만 메시지가 catch 터미널로 전달됩니다.
오류를 핸들링하는 일반 원리는 다음과 같습니다.
fail 플로우는 out 또는 catch 플로우에 있는 MQInput 노드 외부에서 예외가 생성된 경우, 메시지가 트랜잭션인 경우 및 입력 큐의 메시지 복귀로 백아웃 수가 백아웃 임계값에 도달하는 경우에도 호출됩니다.
SCADAInput 노드는 노드 외부에서 예외가 생성되고 사용자가 catch 터미널에 연결되지 않은 경우 메시지를 failure 터미널에 전달하지 않습니다.
Error Handler 샘플은 오류 핸들링 루틴을 사용하여 오류에 대한 정보를 트랩하고 데이터베이스에 정보를 저장하는 방법에 대해 설명합니다. 오류 핸들링 루틴은 변경되지 않은 상태로 임의의 메시지 플로우에 추가할 수 있는 서브플로우입니다. 샘플은 트랜잭션성을 제어하도록 메시지 플로우를 구성하는 방법, 특히 전체 데이터 무결성을 확인하도록 전역적으로 통합된 트랜잭션 사용에 대해 설명합니다.