다음을 통해 공유


실패한 메시지 라우팅 사용

오류 처리 기능을 사용하면 디자이너가 실패한 메시지를 일시 중단된 큐에 배치하는 기존 동작(현재 기본값) 대신 메시징 오류의 자동 처리 방식을 지정할 수 있습니다. 이러한 자동 처리 기능은 오류 메시지를 송신 포트 또는 오케스트레이션과 같은 임의의 등록 라우팅 대상으로 라우팅합니다. 오류 메시지는 원본 메시지의 복제본으로서 이전에 승격된 속성은 모두 강등(demotion)되고 특정 메시징 실패와 관련하여 선택한 속성은 메시지 컨텍스트로 승격됩니다.

경고

실패한 메시지에는 원본 메시지의 복사본이 포함됩니다. 원본 메시지에 중요한 정보가 포함될 경우 정보가 노출될 가능성을 줄이기 위해 실패한 메시지에 대한 수동 및 자동 프로세스를 디자인하십시오.

실패한 메시지를 라우팅하는 방법

실패한 메시지 라우팅이 설정된 경우 BizTalk Server는 메시지를 일시 중단하는 대신 라우팅합니다. 실패한 메시지 라우팅은 수신 및 송신 포트에 모두 설정할 수 있으며 그 결과는 다음과 같습니다.

  • 실패한 메시지 라우팅을 수신 포트에 설정할 경우 수신 파이프라인 또는 라우팅 중에 메시지가 실패하면 실패한 메시지가 생성됩니다. 디스어셈블 단계 또는 그 이전에 오류가 발생한 경우 오류 메시지는 원본 교환의 복제본입니다.

  • 실패한 메시지 라우팅을 송신 포트에 설정할 경우 송신 파이프라인에서 메시지가 실패하면 실패한 메시지가 생성됩니다.

    실패한 메시지가 생성되면 BizTalk Server가 실패한 메시지를 게시하기 전에 오류 보고와 관련된 메시지 컨텍스트 속성을 승격하고 일반적인 메시지 컨텍스트 속성을 강등합니다. 이러한 동작은 실패한 메시지 라우팅을 설정하지 않았을 때 실패한 메시지가 일시 중단되는 기본 동작과 다릅니다.

오류 메시지를 트리거하는 메시징 오류 종류

실패한 메시지에 대한 라우팅이 설정되어 있는 경우 어댑터 처리, 파이프라인 처리, 매핑 또는 메시지 라우팅에 발생하는 모든 오류에 대해 오류 메시지가 생성됩니다. 오케스트레이션이 수신 포트에서 메시지를 수신 중이거나 송신 포트에 메시지를 전송 중일 때 메시징 오류가 발생하면 결과 오류 메시지는 오케스트레이션이 바인딩된 메시징 포트와 연결됩니다.

오류 메시지 등록

오류 메시지는 오류 메시지를 수신하도록 등록한 오케스트레이션 또는 송신 포트에 전달됩니다. 등록은 일반적으로 메시징 오류가 발생한 포트(송신 또는 수신 포트)의 이름에 따라 오류 메시지를 선택합니다. 또한 오류 메시지 컨텍스트로 승격된 기타 속성(예: InboundTransportLocation 또는 FailureCode)으로 필터링을 수행할 수도 있습니다.

오류 메시지 사양

오류 메시지는 실패한 원본 메시지의 복제본으로서 이전에 승격된 속성은 모두 강등되고 특정 오류 속성은 메시지 컨텍스트로 승격됩니다. 오류 메시지를 수신하도록 지정되지 않은 등록자에게 잘못 전달되지 않도록 이전에 승격된 속성이 강등됩니다. 오류 메시지는 등록자(오케스트레이션, 송신 포트 및 송신 포트 그룹)에게 배포할 수 있도록 게시됩니다.

오류 메시지의 컨텍스트로 승격되는 속성은 모두 BizTalk Server ErrorReport 네임스페이스에 속합니다. 다음과 같습니다.

속성 이름 데이터 형식 승격 Description
FailureCode xs:string Yes 오류 코드 BizTalk Server 관리 콘솔에 보고되는 16진수 값입니다.
FailureCategory xs:int Yes 이 속성은 사용되지 않습니다. 값이 정의되지 않았습니다.
Description xs:string No 오류 설명으로서 이 메시징 실패와 관련하여 애플리케이션 이벤트 로그에 기록되는 진단 텍스트입니다.
MessageType xs:string Yes 실패한 메시지의 메시지 유형이거나 메시지 유형이 정해지지 않은 경우 빈 값입니다.

BizTalk Server는 메시지 유형을 사용하여 메시지를 해당 XML 스키마와 연결합니다. 스키마 네임스페이스를 스키마 루트 노드와 연결하여 메시지 형식을 구성합니다. http://mynamespace#rootnode. 참고: 메시지 유형이 결정되기 전에 실패한 메시지에는 이 속성이 설정되어 있지 않습니다.
ReceivePortName xs:string 수신 포트에서 인바운드 처리를 진행하는 동안 오류가 발생하면승격됨

송신 포트에서 오류가 발생하면승격 안 됨
오류가 발생한 수신 포트의 이름입니다.
InboundTransportLocation xs:string 수신 포트에서 인바운드 처리를 진행하는 동안 오류가 발생하면승격됨

송신 포트에서 오류가 발생하면승격 안 됨
오류가 발생한 수신 위치의 URI입니다.
SendPortName xs:string 송신 포트에서 아웃바운드 처리를 진행하는 동안 오류가 발생하면승격됨

수신 포트에서 오류가 발생하면승격 안 됨
오류가 발생한 송신 포트의 이름입니다.
OutboundTransportLocation xs:string 송신 포트에서 아웃바운드 처리를 진행하는 동안 오류가 발생하면승격됨

수신 포트에서 오류가 발생하면승격 안 됨
오류가 발생한 송신 위치의 URI입니다.
ErrorType xs:string Yes 오류에 포함된 메시지 유형을 나타냅니다. 이 속성은 항상 FailedMessage값을 포함하므로 실패한 원본 메시지가 오류에 포함됩니다.
RoutingFailureReportID xs:string Yes 이 속성은 라우팅 오류가 있는 경우 BizTalk Server가 생성하는 라우팅 오류 보고서의 ID를 제공합니다. 라우팅 오류 보고서는 BizTalk Server가 생성 및 일시 중단하는 특수 메시지입니다. 이 메시지에는 본문이 없지만 실패한 메시지의 컨텍스트가 포함됩니다. 오류 처리 오케스트레이션 또는 송신 포트는 이 ID를 사용하여 MessageBox 데이터베이스에 쿼리를 수행하고 라우팅 오류 보고서를 처리할 수 있습니다. 예를 들어 오케스트레이션이 실패한 메시지를 받은 다음 라우팅 오류 보고서를 종료할 수 있습니다.
FailureTime xs:dateTime 오류 발생 날짜 시간
FailureMessageID xs:string
FailureInstanceID xs:string
FailureAdapter xs:string

오류 메시지 처리

오류 처리는 필터가 오류 메시지의 메시지 컨텍스트로 승격된 속성과 일치하는 오케스트레이션 또는 송신 포트 등록에 의해 지정됩니다.

보안에 미치는 영향

원본 메시지와 연결된 ID(초기 ID 또는 수신 파이프라인의 파티 검사(resolution) 단계에서 결정된 최종 ID)가 오류 메시지에 할당됩니다.

권한이 부여된 등록 포트 또는 오케스트레이션으로만 메시지를 전달할 수 있도록 제한하는 보안 메커니즘도 오류 메시지에 적용됩니다.

오류 메시지에 등록되어 있지만 적합한 암호 해독 인증서가 구성되지 않은 송신 포트는 원본 메시지를 BizTalk Server에 전달하는 수신 파이프라인의 암호 해독 단계 또는 그 전에 발생한 메시징 오류로 인한 오류 메시지를 받을 수 없습니다. 대신 실패한 메시지가 일시 중단된 큐에 배치됩니다.

어댑터 메시징 실패

어댑터가 메시지를 일시 중단하면 오류 메시지가 게시됩니다. 메시지가 일시 중단되지 않으면 오류 메시지가 생성되지 않습니다.

트랜잭션 수신 파이프라인

트랜잭션 수신 파이프라인이 예외를 throw하면(트랜잭션 중단 지정) 트랜잭션이 중단되고 오류 메시지가 게시됩니다.

트랜잭션 수신 파이프라인이 메시지를 명시적으로 일시 중단하면(MessageDestination = SuspendQueue 지정) 현재 트랜잭션을 계속 수행할 수 있고(이후 단계에서 트랜잭션 중단을 지정하지 않는 경우 커밋 가능) 결과 오류 메시지가 게시됩니다.

간청-응답 송신 포트

오케스트레이션이 요청 메시지를 전송했을 때 전송이 실패하거나 응답의 인바운드 처리가 실패하는 경우 실패한 메시지가 라우팅되었는지 여부에 관계 없이 오케스트레이션에 예외가 발생합니다.

간청-응답 송신 포트가 요청-응답 수신 포트에 연결된 경우 실패한 메시지가 라우팅되었는지 여부에 관계 없이 수신 포트에 응답 메시지(전송이 성공한 경우) 또는 NACK(전송이 실패한 경우)가 전달됩니다.

단방향 송신 포트

오케스트레이션이 배달 알림이 구성된 송신 포트를 통해 메시지를 전송하면 오류 메시지가 라우팅되었는지 여부에 관계 없이 오케스트레이션에 배달 알림이 전송됩니다. 즉, 송신 포트는 처리 중 메시징 실패가 발생하는 경우에도 오케스트레이션에 대한 배달 알림을 생성합니다. 알림은 포트에 메시지가 배달되었음을 확인해 주지만 포트에서 메시지가 성공적으로 처리되었는지 보장하지는 않습니다.

일시 중단된 메시지 다시 시작

인바운드 처리(수신 어댑터의 처리는 포함되지만 MessageBox에 대한 게시는 포함되지 않음)가 실패하고 오류가 처리되지 않은 대부분의 메시지는 다시 시작 가능 상태로 일시 중단됩니다. 하지만 양방향 수신 포트의 요청 메시지는 다시 시작 불가능 상태로 일시 중단됩니다.

메시지는 일반적으로 파이프라인에서 처리되기 이전의 원래 형식으로 일시 중단되지만 다음과 같은 두 가지 예외가 있습니다.

  • 파이프라인 구성 요소에 의해 일시 중단된 메시지. BizTalk Server는 이러한 유형의 메시지를 실패한 파이프라인 구성 요소에 제공된 것과 동일한 형식으로 일시 중단합니다. 메시지를 다시 시작하면 동일 파이프라인의 처음부터 파이프라인 처리가 수행됩니다. 즉, 해당 메시지를 처리할 때 사용한 원본 형식과 다른 형식으로 "동일" 메시지를 처리하려면 원래 오류가 발생한 단계 이전의 파이프라인 단계에 있던 대로 파이프라인 구성 요소를 준비해야 합니다.

  • 복구 가능한 교환 디스어셈블리에서 가져온 이후에 라우팅이 실패하는 메시지. BizTalk Server는 이러한 유형의 메시지를 게시되었을 때와 동일한 형식으로 일시 중단합니다. 이러한 형식은 파이프라인 실행 이후의 메시지 형식입니다. 메시지를 다시 시작하면 파이프라인 처리를 건너뛰고 MessageBox 데이터베이스에 직접 게시됩니다.

일시 중단됨(다시 시작 불가능) 메시지가 발생하는 시나리오

메시지가 다시 시작 가능으로 일시 중단되는 경우가 보다 일반적이지만 다시 시작 불가능한 메시지가 발생하는 시나리오도 있습니다.

  • 실패 시 계속 동작이 설정된 순차적 전달 송신 포트에서 파이프라인, 매핑 또는 전송 오류가 발생한 경우.

  • 순차적 전달 수신 포트에서 어댑터가 실패 시 메시지를 일시 중단(다시 시작 불가능)하도록 구성된 경우. 예를 들어 MSMQ 어댑터 설정인 "실패한 경우"가 "일시 중단(다시 시작 불가능)"으로 설정되었거나 MQSeries 어댑터에 "일시 중단(다시 시작 불가능)"이 설정된 경우 실패한 메시지는 다시 시작 불가능으로 일시 중단됩니다.

  • 양방향 수신 포트에서 응답 메시지에 대한 파이프라인, 매핑 또는 전송 오류가 발생한 경우.

  • 양방향 수신 포트에서 수신 메시지에 대한 파이프라인, 매핑 또는 전송 오류가 발생한 경우. 개별 어댑터 동작은 서로 다를 수 있습니다. 예를 들어 HTTP 어댑터는 기본적으로 메시지를 일시 중단하지 않지만 일시 중단하도록 구성할 수 있습니다.

참고 항목

오류 처리
승인 사용
메시지의 순차적 전달