자습서: BizTalk 서비스 연결을 사용하여 서비스 버스 릴레이 서비스에서 메시지 보내기 및 받기

업데이트 날짜: 2015년 8월

이 자습서에서는 Microsoft Azure BizTalk 서비스을 사용하여 배포한 단일 연결 끝점으로 각기 다른 스키마를 사용하는 XML 메시지를 보내는 방법에 대한 지침을 제공합니다. 연결에서는 솔루션의 일부분으로 정의된 비즈니스 논리를 기준으로 메시지를 처리하여 둘 이상의 릴레이 서비스로 라우팅합니다. 이 자습서에서는 이러한 시나리오를 사용하여 다음과 같은 BizTalk 서비스의 기타 기능에 대해서도 설명합니다.

  • 경로 필터: 연결에서는 필터를 기준으로 메시지를 적절한 받는 사람에게 라우팅할 수 있습니다. 필터는 메시지의 일부분으로 전달되는 특정 값에 대해 설정합니다. XML 메시지에서 <Recipient> 요소의 값이 Finance로 설정되어 있으면 Service A로 메시지를 보내고 그렇지 않으면 Service B로 메시지를 보내는 경우를 예로 들 수 있습니다. 자세한 내용은 The Routing Condition를 참조하세요.

  • 경로 동작: 경로 동작을 통해 프로토콜 불일치 현상을 해결할 수 있습니다. 예를 들어 App AApp B의 두 응용 프로그램이 있는데 App A은 REST 프로토콜을 사용하여 메시지를 보내며 App B는 SOAP 메시지만 수신한다고 가정해 보겠습니다. 이 경우 App A에서 연결로 대신 메시지를 보내면 연결은 경로 동작의 일부분으로 메시지에 SOAP 헤더를 포함합니다. 그런 다음 연결은 App B로 메시지를 보냅니다. 자세한 내용은 The Routing Action를 참조하세요.

  • 회신 동작: 회신 동작은 경로 동작이 받는 사람에게 메시지를 보낼 때 제공하는 것과 같은 기능을 클라이언트에게 다시 응답을 보낼 때 제공합니다. 따라서 App B에서 App A에 응답을 보낼 때 연결은 회신 동작 기능을 사용하여 클라이언트에 필요한 헤더로 응답을 스탬프 처리합니다. 자세한 내용은 Reply Action를 참조하십시오.

이 자습서에서는 비즈니스 시나리오를 사용하여 연결의 이러한 기능 및 기타 기능에 대해 설명합니다.

자동차 보험 회사인 Northwind Traders는 보험 메시지용 업계 표준인 표준 ACORD 스키마 규격의 XML 형식으로 새 보험 증권 견적서 요청을 수신합니다. 들어오는 메시지는 모든 ACORD 규격 형식일 수 있습니다. 따라서 Northwind Traders는 둘 이상의 XML 스키마를 준수하는 XML 메시지를 처리할 수 있는 솔루션을 구성해야 합니다. Northwind Traders가 메시지를 받으면 제공된 ACORD 메시지 스키마와 대조하여 해당 메시지의 유효성을 검사한 다음 Northwind 내부용 스키마로 변환됩니다. 그런 다음 메시지를 추가로 처리하는 백 엔드 서비스로 해당 메시지를 보냅니다. 그러나 메시지를 서비스로 보내기 전에 특정 라우팅 조건이 적용됩니다.

  • 즉, 견적 금액이 $10000 미만인 메시지는 RelayReceiverServiceA 릴레이 서비스로 보내야 합니다. 그리고 메시지를 릴레이 서비스로 보내기 전에 SOAP 헤더 QuoteType을 메시지 헤더에 추가해야 합니다. 이 헤더의 값은 SmallAmounts로 설정되어야 합니다.

  • 견적 금액이 $10000보다 큰 메시지는 고위험 청구 건으로 처리되어 RelayReceiverServiceB라는 다른 릴레이 서비스로 전송됩니다. 그리고 메시지를 서비스로 보내기 전에 SOAP 헤더 QuoteType을 메시지 헤더에 추가해야 합니다. 이 헤더의 값은 LargeAmounts로 설정되어야 합니다.

메시지를 받은 후 서비스에서는 응답을 생성하고 헤더를 추가한 다음 연결에 응답을 다시 보냅니다. 서비스가 추가하는 헤더는 다음과 같습니다.

 

서비스의 응답 추가되는 헤더

RelayServiceA

 

헤더 이름 헤더 값

MsgStatus

성공

Eligibility

ApprovedForSmallAmounts

RelayServiceB

 

헤더 이름 헤더 값

MsgStatus

성공

Eligibility

ApprovedForLargeAmounts

서비스의 응답 형식은 Northwind 내부 요청 형식과 같습니다. 연결은 응답을 받으면 ACORD 표준 규격의 응답 메시지 스키마로 변환합니다. 또한 연결에서는 MsgStatus 헤더의 값을 추출하여 응답 스키마의 요소에 할당합니다. 마지막으로 메시지를 클라이언트로 다시 보내기 전에 연결은 ProcessingStatus라는 또 다른 헤더를 추가하고 해당 값을 Complete로 설정합니다. 다음 그림에 이 시나리오가 나와 있습니다.

릴레이 서비스 연결 사용

Northwind Traders는 BizTalk 서비스을 사용하여 이 시나리오를 설정합니다. 이 시나리오가 전체적으로 작동할 수 있도록 Northwind Traders가 수행하는 작업은 다음과 같습니다.

  • RelayReceiverServiceARelayReceiverServiceB의 두 릴레이 서비스를 만듭니다. RelayReceiverServiceA는 견적 금액이 $10000 미만인 메시지를 받고 RelayServiceB는 견적 금액이 $10000보다 큰 메시지를 받습니다. 두 서비스는 메시지를 받은 후 비즈니스 시나리오에서 설명한 것처럼 응답 메시지를 생성하고 헤더로 스탬프 처리합니다.

  • BizTalk Services 프로젝트를 만든 다음 들어오는 XML 메시지를 처리하고 응답을 보내기 위한 XML 요청-응답 연결을 추가합니다. 또한 RelayReceiverServiceARelayReceiverServiceB에 대해 하나씩 양방향 릴레이 서비스 구성 요소를 추가합니다.

  • 모든 필수 아티팩트(스키마 및 변환)를 BizTalk Services 프로젝트에 추가합니다.

  • 다음을 수행하기 위한 XML 요청-응답 연결의 요청 경로를 구성합니다.

    • ACORD 스키마와 대조하여 XML 메시지의 유효성을 검사하는 유효성 검사 단계를 구성합니다.

    • 메시지가 백 엔드 서비스로 라우팅되는 기준으로 사용할 속성을 승격하는 보강 단계를 구성합니다.

    • 메시지를 ACORD 스키마에서 Northwind 내부 스키마로 변환하는 변환 단계를 구성합니다.

  • 다음을 수행하기 위한 XML 요청-응답 연결의 응답 경로를 구성합니다.

    • 릴레이 서비스에서 응답 메시지에 추가한 MsgStatus 헤더를 추출하는 보강 단계를 구성합니다.

    • 릴레이 서비스의 응답을 ACORD 표준 규격 메시지 스키마로 변환하는 변환 단계를 구성합니다. 또한 이 단계에서 연결은 MsgStatus 헤더의 값을 추출하여 응답 스키마의 요소에 할당합니다.

    • 클라이언트로 전송되는 응답 메시지에 ProcessingStatus 헤더를 포함하는 회신 동작 단계를 구성합니다.

  • 두 릴레이 서비스를 나타내는 두 외부 릴레이 끝점을 BizTalk Services 프로젝트에 추가한 다음 XML 요청-응답 연결 연결에 연결합니다. 이 라우팅 커넥터의 일부분으로 Northwind는 다음 작업을 수행합니다.

    • 연결 구성 디자인 화면의 모든 구성 요소를 연결하고 견적 금액을 기준으로 필터 조건을 설정합니다.

    • 메시지의 QuoteType 헤더를 스탬프 처리하고 메시지를 라우팅하는 서비스에 따라 해당 값을 SmallAmounts 또는 LargeAmounts로 설정합니다.

  • 마지막으로 서비스 버스 및 BizTalk Services 프로젝트의 의 두 릴레이 서비스를 BizTalk 서비스에 배포하고 연결 끝점에 메시지를 보냅니다.

이 자습서는 MSDN 코드 갤러리에서 다운로드의 일부로 사용 가능한 Bridges_RelayServices.zip 샘플을 중심으로 작성되었습니다. 이 샘플을 사용하고 이 자습서를 진행하여 샘플이 작성된 방식을 이해하거나 이 자습서를 사용하여 고유한 응용 프로그램을 만들 수 있습니다. 이 자습서는 이 응용 프로그램이 빌드된 방식을 이해할 수 있도록 두 번째 접근 방식을 사용합니다. 또한, 가능한 한 이 자습서는 샘플과 일관성을 유지하며 샘플에서 사용된 것과 동일한 아티팩트(예: 스키마, 변환) 이름을 사용합니다.

자습서를 따라 개념 및 절차를 이해하는 것이 좋지만 샘플을 사용하려는 경우 다음을 수행합니다.

  • Bridges_RelayServices 샘플을 다운로드하여 서비스 버스 네임스페이스, 발급자 이름, 발급자 키를 입력하는 등 관련 사항을 변경합니다. 필요한 변경을 수행한 후 응용 프로그램을 빌드하고 배포합니다.

  • 연결을 통해 수신한 요청 메시지를 수락하는 두 릴레이 서비스를 빌드하고 호스트합니다.

  • 패키지에서 제공하는 MessageSender 도구를 사용하여 연결에 요청 메시지를 보냅니다. 서비스와 MessageSender 도구의 명령 프롬프트에서 메시지가 정상적으로 처리되었는지 확인합니다. 메시지가 정상적으로 처리된 경우 요청 및 응답 스키마는 프로젝트의 \bin\Debug 폴더에 저장됩니다. 메시지 파일의 위치와 이름도 개별 명령 프롬프트에 표시됩니다.

BizTalk 서비스 다운로드 위치(http://go.microsoft.com/fwlink/?LinkId=235057)에서 BizTalk 서비스 SDK를 다운로드하여 설치합니다. 자세한 내용은 Azure BizTalk 서비스 SDK 설치을 참조하십시오. SDK를 설치하면 Visual Studio에 BizTalk Services 프로젝트 템플릿이 설치됩니다. 이 프로젝트 템플릿은 비즈니스 시나리오에서 설명한 것처럼 메시지 유효성 검사, 변환 및 여러 끝점으로의 라우팅을 수행하는 연결을 만드는 데 사용됩니다.

참고 항목

기타 리소스

자습서 및 샘플

표시: