Transactional 어댑터(BizTalk Server 샘플)
트랜잭션 어댑터 샘플에서는 BizTalk Server 메시지를 처리하는 동안 데이터베이스에 대해 명시적 MSDTC(Microsoft Distributed Transaction Coordinator) 트랜잭션을 만들고 사용하는 방법을 보여 줍니다.
이 샘플의 용도
이 샘플에는 사용자가 지정한 간격으로 SQL 문을 실행하는 수신 어댑터가 포함되어 있어 MSDTC 트랜잭션을 사용하여 SQL Server 데이터베이스에서 데이터를 가져옵니다. 그런 다음 데이터는 동일한 트랜잭션의 컨텍스트에서 메시지 형식으로 BizTalk Server MessageBox 데이터베이스에 제출됩니다.
해당 송신 어댑터는 트랜잭션 컨텍스트의 BizTalk 메시지에서 가져온 입력을 사용하여 사용자가 지정한 SQL 저장 프로시저를 실행합니다. 해당 메시지에서 가져온 특정 데이터를 사용하여 동일한 트랜잭션의 MessageBox 데이터베이스에서 해당 메시지를 찾아 삭제합니다.
이 샘플이 디자인된 방식 및 이유
이 샘플 솔루션에는 두 개의 프로젝트가 있습니다. 첫 번째는 관리 프로젝트(Admin)로 런타임 이전에 사용되어 이를 통해 사용자가 이 어댑터를 사용하는 수신 위치와 송신 포트를 구성할 수 있습니다. 두 번째는 런타임 프로젝트(Runtime)로 송신 및 수신 어댑터가 실행 중일 때 실행됩니다.
이 샘플이 있는 위치
샘플은 다음 SDK 위치에 있습니다.
<샘플 경로>\Samples\AdaptersDevelopment\TransactionalAdapter. 관리 구성 프로젝트는 \Admin 폴더에 있으며, 런타임 프로젝트는 \Runtime 폴더에 있습니다.
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
관리 프로젝트 파일 이름 | 관리 프로젝트 파일 설명 |
---|---|
TransactionalAdmin.csproj | 런타임 전 구성에 사용되는 어댑터 관리 프로젝트 파일 |
TransactionalReceiveHandler.xsd | 수신 핸들러 속성에 대한 XSD |
TransactionalReceiveLocation.xsd | 수신 위치 속성에 대한 XSD |
TransactionalTransmitLocation.xsd | 전송 위치 속성에 대한 XSD |
TransactionalTransmitHandler.xsd | 전송 핸들러 속성에 대한 XSD |
TransactionalAdapterManagement.cs | 어댑터 구성 관리. BizTalk 어댑터 프레임워크에서 호출한 GetConfigSchema가 포함되어 있어 지원되는 가능한 구성 유형(4개) 각각에 대해 XSD 구성 스키마를 반환합니다. |
런타임 프로젝트 파일 이름 | 런타임 프로젝트 파일 설명 |
---|---|
Transactional.csproj | 어댑터 런타임 프로젝트 파일 |
TransactionalAsyncBatch.cs | 어댑터 송신 부분의 비동기 구현 |
TransactionalDeleteBatch.cs | 메시지 및 응답 일괄 처리를 삭제하여 트랜잭션을 커밋하거나 중단 |
TransactionalProperties.cs | 구성 속성을 추출하여 설정 |
TransactionalReceiver.cs | 수신 엔드포인트를 만들고 관리 |
TransactionalReceiverEndpoint.cs | 각 수신 위치에 대한 실제 수신 또는 폴링 |
TransactionalTransmitter.cs | 메시징 엔진의 메시지를 일괄 처리로 전송되도록 허용 |
이 샘플의 사용 방법
이 샘플은 명시적 트랜잭션을 사용하여 사용자 지정 송신 및 수신 어댑터를 만들 데 사용할 프레임워크를 의미합니다.
이 샘플 빌드 및 초기화
중요
설치된 BizTalk이 64비트 버전이거나 설치 위치를 수정한 경우 그에 따라 OutboundAssemblyPath, InboundAssemblyPath 및 AdapterMgmtAssemblyPath를 변경해야 합니다.
트랜잭션 어댑터 샘플에 대한 강력한 이름 키 만들기
Visual Studio 명령 프롬프트를 시작합니다.
명령 프롬프트에서 다음을 입력한 다음 Enter 키를 누릅니다.
cd \Program Files\Microsoft BizTalk Server <version>\SDK\Samples\AdaptersDevelopment\TransactionalAdapter\Runtime
명령 프롬프트에서 다음을 입력한 다음 Enter 키를 누릅니다.
sn –k TransactionalAdapter.snk
명령 프롬프트에서 exit를 입력한 다음 Enter 키를 눌러 명령 프롬프트 창을 닫습니다.
트랜잭션 어댑터 솔루션 빌드
시작을 클릭하고 모든 프로그램을 가리킨 다음 액세서리를 가리킨 다음 Windows Explorer 클릭합니다.
\Program Files (x86)\Microsoft BizTalk Server <VERSION SDK\Samples\AdaptersDevelopment\TransactionalAdapter로 이동하고 TransactionalAdapter.sln을 두 번 클릭하여 Visual Studio에서 이 솔루션을>엽니다.
솔루션 탐색기 트랜잭션 어댑터 프로젝트(관리 및 런타임)를 모두 빌드하려면 솔루션 TransactionalAdapter를 마우스 오른쪽 단추로 클릭한 다음 다시 빌드를 클릭합니다.
이 샘플 실행
트랜잭션 어댑터 등록
Windows Explorer \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\AdaptersDevelopment\TransactionalAdapter\관리 이동합니다.
트랜잭션 어댑터 데이터를 레지스트리에 추가하려면 TransactionalAdmin.reg를 두 번 클릭합니다.
참고
TransactionalAdmin.reg에는 C:\Program Files\Microsoft BizTalk Server\에 대한 하드 코딩된 경로가 포함되어 있습니다. 기본 위치에 BizTalk Server 설치하지 않았거나 이전 버전에서 BizTalk Server 설치를 업그레이드한 경우 적절한 경로로 transactionalAdmin.reg 파일을 수정해야 합니다. "InboundAssemblyPath", "OutboundAssemblyPath" 및 "AdapterMgmtAssemblyPath" 값과 연결된 경로를 업데이트하여 지정된 파일의 올바른 위치를 가리킵니다.
중요
64비트 컴퓨터에 BizTalk를 설치하는 경우 HKEY_CLASSES_ROOT\CLSID\ 레지스트리 항목의 모든 인스턴스를 TransactionalAdmin.reg 레지스트리 파일의 HKEY_CLASSES_ROOT\Wow6432Node\CLSID\ 변경합니다.
레지스트리 편집기 대화 상자에서 예를 클릭하여 샘플 어댑터를 레지스트리에 추가한 다음 확인을 클릭합니다.
Windows Explorer 닫려면 파일을 클릭한 다음 닫기를 클릭합니다.
BizTalk Server에 트랜잭션 어댑터 추가
시작 메뉴를 클릭하고 모든 프로그램을 선택하고 Microsoft BizTalk Server 20xx를 선택한 다음 BizTalk Server 관리를 선택합니다.
BizTalk Server 관리에서 BizTalk Server 관리 트리를 확장하고 BizTalk 그룹 트리를 확장한 다음 플랫폼 설정 트리를 확장합니다.
어댑터를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 클릭한 다음 어댑터를 클릭합니다.
어댑터 속성 대화 상자에서 다음을 수행합니다.
사용 항목 원하는 작업 Name TransactionalAdapter를 입력합니다. 어댑터 드롭다운 목록에서 Txn 을 선택합니다. 이 항목은 이전에 TransactionalAdmin.reg 파일을 실행한 결과로 나타납니다. Description 샘플 트랜잭션 어댑터를 입력합니다. 확인을 클릭합니다. 이제 어댑터가 BizTalk 관리 콘솔의 오른쪽 창에 있는 어댑터 목록에 표시됩니다.
어댑터를 사용하는 수신 포트 및 위치 만들기
BizTalk Server 관리에서 BizTalk 그룹[서버 이름] 노드를 확장하고, 애플리케이션 노드를 확장하고, BizTalk 애플리케이션 1 노드를 확장합니다.
수신 포트를 마우스 오른쪽 단추로 클릭한 다음 새로 만들기를 클릭하고 단방향 수신 포트를 선택합니다.
이름에 TxnReceivePort1을 입력한 다음 확인을 클릭합니다.
수신 위치 노드를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 클릭한 다음 단방향 수신 위치를 선택합니다.
수신 포트 선택 대화 상자에서 TxnReceivePort1을 선택한 다음 확인을 클릭합니다.
수신 위치 속성 대화 상자의 일반 탭에서 이름에 TxnReceiveLocation1을 입력합니다. 수신 포트 레이블에 TxnReceivePort1이 표시되는지 확인합니다.
형식 드롭다운 목록 상자의 전송 프레임에서 TransactionalAdapter를 선택합니다.
수신파이프라인 상자에서 PassThruReceive가 선택되어 있는지 확인합니다. 나머지 속성은 기본 설정으로 유지합니다.
유형 드롭다운 상자 옆에 있는 구성 단추를 클릭합니다. 이렇게 하면 이 어댑터와 관련된 대화 상자가 표시됩니다. 적절하게 표시되면 다음을 지정한 다음 확인을 클릭합니다.
속성 설정 연결 문자열 Northwind 데이터베이스 연결 및 인증에 사용되는 SQL 데이터베이스 연결 문자열입니다. 나중에 이 데이터베이스를 사용하는 SQL 스크립트를 실행합니다. 명령 텍스트 Northwind 데이터베이스에 대해 실행되는 SQL 문으로, BizTalk 메시지로 배치할 데이터를 가져옵니다. 쿠키 URI의 부분을 구성하므로 수신 위치 이름과 같은 고유한 값을 입력합니다(예: TxnReceiveLocation1). 폴링 간격 단위 데이터 폴링에 대한 시간 측정값 단위 수입니다. 이 값을 초로 설정합니다. 폴링 간격 데이터 폴링에 대한 시간 측정값 단위입니다. 이 값을 15초로 설정합니다. 확인을 클릭하여 구성 대화 상자를 닫은 다음 확인을 다시 확인하여 수신 위치 속성 대화 상자를 닫고 BizTalk Server 관리로 돌아갑니다.
어댑터를 사용하는 송신 포트 및 송신 핸들러 만들기
BizTalk 애플리케이션 1 노드가 계속 확장된 상태에서 포트 보내기를 마우스 오른쪽 단추로 클릭한 다음 새로 만들기를 클릭하고 정적 One-Way 포트 보내기를 선택합니다.
이름 필드에 TxnSendPort1을 입력합니다.
전송 프레임의 유형 드롭다운 목록에서TransactionalAdapter를 선택합니다.
.
송신 파이프라인 상자에서 PassThruTransmit가 선택되어 있는지 확인합니다.
전송 드롭다운 목록 옆에 있는 구성 단추를 클릭합니다. 표시되는 대화 상자에서 적절하게 다음을 지정한 다음 확인을 클릭합니다.
속성 설정 쿠키 URI의 일부로 구성됨 - 수신 위치의 이름(예: instance TxnSendPort1)과 같은 고유한 값을 입력합니다. 연결 문자열 Northwind 데이터베이스 연결 및 인증에 사용되는 SQL 데이터베이스 연결 문자열입니다. TxnReceiveLocation1 수신 위치를 구성하는 데 사용되는 것과 동일할 수 있습니다. 저장 프로시저 데이터베이스를 폴링하기 위해 실행되는 저장 프로시저 이름 - sp_txnProc. BizTalk 메시지의 본문은 해당 저장 프로시저에 라는 @Data문자열 매개 변수로 제공됩니다. 예를 들어 사용자는 나중에 sp_txnProc 이름으로 저장 프로시저를 구성합니다. 어댑터 런타임은 이 데이터베이스 호출과 동일한 호출을 실행합니다.
exec sp_txnProc @Data = "BizTalk 메시지의 내용"왼쪽 탐색 창에서 필터를 클릭합니다.
필터 식 편집기에서 다음 식을 입력하여 TxnReceivePort1 수신 포트에서 수신된 메시지를 받도록 이 송신 포트에 대한 등록을 설정합니다.
BTS 값을 입력합니다. ReceivePortName== TxnReceivePort1
(property)
Bts. ReceivePortName(operator)
==(value)
TxnReceivePort1
어댑터 속성의 나머지 부분에 대한 기본값을 사용하고 확인을 선택합니다.
샘플 실행
시작을 클릭하고 모든 프로그램, Microsoft SQL Server 2008 R2를 차례로 가리킨 다음 SQL Server Management Studio 선택합니다.
서버에 연결 대화 상자에서 서버 유형이 데이터베이스 엔진으로 설정되어 있는지 확인하고 자격 증명을 입력하여 데이터베이스 서버에 인증한 다음 연결을 선택합니다.
새 쿼리 도구 모음 단추를 선택하고 다음을 새 쿼리 창에 붙여넣어 테스트 테이블, 테스트 데이터 및 테스트 저장 프로시저를 Northwind 데이터베이스에 삽입합니다. 도구 모음 실행 단추를 선택합니다.
use [Northwind] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[scratch]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[scratch] GO CREATE TABLE [dbo].[scratch] ( [id] [int] IDENTITY (1, 1) NOT NULL , [msg] [nvarchar] (4000) NOT NULL ) ON [PRIMARY] GO GRANT SELECT , UPDATE , INSERT ON [dbo].[scratch] TO [public] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_txnProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[sp_txnProc] GO CREATE PROCEDURE [dbo].[sp_txnProc] @Data nvarchar (4000) AS INSERT scratch ( msg ) values ( @Data ) GO GRANT EXECUTE ON [dbo].[sp_txnProc] TO [public] GO
BizTalk Server 관리에서 송신 포트 노드를 확장하고 TxnSendPort1 송신 포트를 선택한 다음 시작을 선택합니다.
BizTalk Server 관리에서 ReceiveLocations 노드를 확장하고 TxnReceiveLocation1 수신 위치를 선택한 다음 사용을 선택합니다.
수신 위치가 사용되도록 설정되고 나면 지정된 데이터 간격으로 데이터베이스를 자동으로 폴링합니다.
샘플에서 사용되는 클래스 또는 메서드
IBTTransmitterBatch 인터페이스(COM)
IBTTransportProxy 인터페이스(COM)
이러한 메서드는 UI 지침 및 개발자 API 네임스페이스 참조에 설명되어 있습니다.