다음을 통해 공유


디스어셈블리 단계(복구 가능한 교환 처리)

교환은 디스어셈블리 단계에서 다음 두 가지 모드로 처리됩니다.

  • 표준 모드. 수신 파이프라인의 디스어셈블러 구성 요소가 표준 디스어셈블리를 수행하도록 구성된 경우 교환에 포함된 메시지에 대해 추출, 수신 파이프라인 처리, 매핑 및 트랜잭션 작업 단위 게시 등의 작업이 수행됩니다. 즉, 전체 교환 및 포함 메시지를 완전히 처리하고 MessageBox 데이터베이스에 게시하거나 일시 중단된 큐에 교환을 배치합니다.

  • 복구 가능 모드. 수신 파이프라인의 디스어셈블러 구성 요소가 복구 가능한 교환 처리를 수행하도록 구성된 경우 교환에 포함된 메시지는 서로 독립적으로 추출됩니다. 성공적으로 추출된 메시지는 수신 파이프라인 아래로 전파됩니다. 교환에서 식별되었지만 성공적으로 추출되지 못한 메시지는 일시 중단된 큐에 배치됩니다.

예제

다음 예에서는 교환 처리 시나리오를 보여 줍니다.

예 1

이 예에서는 다음 의사 교환이 표준 교환 수신 위치에 전송됩니다. 즉, 표준 교환 처리에 대해 수신 파이프라인의 디스어셈블러 구성 요소가 구성됩니다.

<Interchange>  
<Document1>...</Document1>  
<Document2 failure=”routing”>...</Document2>  
<Document3>...</Document3>  
<Document4 failure=”pipeline” recoverableError=”true”>...</Document4>  
<Document5>...</Document5>  
</Interchange>  

이 교환에는 디스어셈블러가 교환으로부터 성공적으로 추출한 5개의 메시지가 포함됩니다. 이러한 메시지는 다음과 같이 처리됩니다.

  • 첫 번째, 두 번째 및 세 번째 메시지는 파이프라인을 통해 전파되며 게시할 준비가 됩니다.

  • 네 번째 메시지는 파이프라인의 디스어셈블 단계에서 처리가 실패합니다. 그 결과 이미 처리된 모든 메시지가 롤백되고 원래 교환 메시지가 다시 시작 가능 상태로 일시 중단됩니다.

    결과는 다음과 같습니다.

  • 아무 것도 게시되지 않습니다. 표준 교환 처리에서 추출된 메시지가 교환 처리 중 또는 이후의 특정 지점에서 실패하면 추출된 모든 메시지가 삭제되고 원래 교환이 다시 시작 가능 상태로 일시 중단된 큐에 배치됩니다.

예 2

이 예에서는 교환 처리 및 전파 방식이 이전 예와 동일하지만 디스어셈블 단계가 복구 가능한 교환 처리를 수행하도록 구성되어 있습니다.

이 예에서는 추출된 각 메시지가 모두 처리되고 원래 교환이 삭제됩니다. 각 메시지는 다음과 같이 처리됩니다.

  • 첫 번째, 두 번째 및 세 번째 메시지는 파이프라인을 통해 전파되며 게시할 준비가 됩니다.

  • 네 번째 메시지의 디스어셈블 처리가 실패하고(즉, 추출 이후 오류 발생) 일시 중단할 준비가 됩니다.

  • 다섯 번째 메시지는 파이프라인을 통해 전파되며 게시할 준비가 됩니다.

  • 교환에서 모든 메시지를 추출한 다음 1, 2, 3, 5번째 메시지는 MessageBox 데이터베이스에 게시되고 4번째 메시지는 일시 중단된 큐에 배치됩니다. 2번째 메시지는 또한 일치하는 등록자가 없어서 발생한 라우팅 오류로 인해 일시 중단된 큐에 리디렉션됩니다.

복구 가능한 교환 처리 구성

복구 가능한 교환 처리는 수신 파이프라인의 디스어셈블러 구성 요소의 속성입니다. 고유 BizTalk Framework 디스어셈블러와 같은 일부 디스어셈블러 구성 요소에서는 복구 가능한 교환 처리를 지정할 수 없습니다. 디스어셈블러가 복구 가능한 교환 처리를 지원하는 경우 디스어셈블러 구성 요소를 설계 중인 파이프라인의 디스어셈블 단계에 추가할 때 Visual Studio 내의 파이프라인 Designer 이 동작을 지정합니다. 선택한 디스어셈블러를 파이프라인의 디스어셈블 단계로 끌어온 후 해당 디스어셈블러 구성 요소의 복구 가능한 교환 처리 속성을 로 true설정합니다.

Party Resolution

복구 가능한 교환 처리에서 성공적으로 추출한 메시지는 부모 교환이 수신된 수신 포트에 대해 구성되어 있는 파티에 따라 해당 송신 파티가 식별됩니다. 특정 교환에서 추출한 메시지에 대해 파티 검사(resolution)가 실패하는 경우 전체 교환의 파티 검사(resolution)가 실패한 것으로 간주됩니다.

제한

  • 디스어셈블러에서 교환이 실패하면 교환이 다시 시작 가능 상태로 일시 중단됩니다. 하지만 관리자가 교환을 다시 시작하면 디스어셈블리 실패의 원인이 된 같은 종류의 오류가 교환을 다시 시작할 때에도 그대로 남아 있기 때문에 교환이 실패합니다. 이렇게 실패한 교환은 수정 후 수신 위치를 통해 다시 전송해야 합니다.

  • 교환에서 성공적으로 추출된 메시지에 일치하는 등록자가 없어서 이후 메시징 단계에 대한 전파 오류가 발생하면 메시지가 다시 시작 가능 상태로 일시 중단됩니다. 이 메시지는 라우팅 실패 원인을 수정할 경우 관리자가 다시 시작할 수 있습니다.

  • 디스어셈블러 구성 요소는 디스어셈블러 구성 요소의 다음 오류에 관계 없이 교환에서 메시지를 계속 추출합니다.

    • 스키마를 찾을 수 없음

    • 스키마 모호성 확인 불가(즉, 동일 메시지 유형에 대해 하나 이상의 스키마가 존재함)

    • XML 유효성 검사 실패

    • 플랫 파일 구문 분석 실패

  • 디스어셈블러 구성 요소에서 다음 오류가 발생하는 경우 디스어셈블러 구성 요소는 교환에서 메시지를 계속 추출 하지 않습니다.

    • 문서 데이터가 잘 구성된(well-formed) XML이 아니어서 일부 문서 속성이 System.Xml.XmlReader가 실패하도록 만듭니다.

참고 항목

XML 디스어셈블러 파이프라인 구성 요소를 구성하는 방법
플랫 파일 디스어셈블러 파이프라인 구성 요소를 구성하는 방법