송신 어댑터 인스턴스화 및 초기화
기본적으로 송신 어댑터는 첫 번째 메시지가 전달될 때까지 인스턴스화되지 않습니다. "지연 생성"이라고 하는 프로세스입니다. 기본 지연 생성 방법은 시스템 리소스를 절약하는 데 도움이 됩니다. 송신 어댑터가 만들어지면 캐시에 저장되어 BizTalk Server 서비스가 중지될 때까지 지워지지 않습니다.
기능 열거형의 InitTransmitterOnServiceStart 멤버는 필요한 경우 기본 지연 생성을 사용하는 대신 메시징 엔진에 서비스 시작 시 송신 어댑터를 만들도록 지시합니다.
메시지 일괄 처리의 관점에서 볼 때 메시지 송신 모델은 메시지 수신 모델과 다릅니다. 수신의 경우 어댑터는 메시징 엔진에서 가져온 일괄 처리에 삽입할 들어온 메시지를 가지고 있습니다. 송신의 경우 메시징 엔진이 어댑터에서 일괄 처리를 가져오고 전송될 메시지를 어댑터에 보냅니다. 두 경우 모두 전송 프록시를 사용하여 메시지 일괄 처리 개체를 가져옵니다.
송신 어댑터가 초기화되는 방법
구성 및 전송 프록시에 대한 바인딩을 사용하려면 어댑터에서 다음과 같은 구성 인터페이스를 구현해야 합니다.
IBTTransport
IBaseComponent
IBTTransportControl
IPersistPropertyBag
다음 단계는 송신 어댑터 초기화에 관여하는 이벤트의 순서에 대해 설명합니다.
메시징 엔진이 송신 어댑터를 초기화하면 먼저 선택적 인터페이스인 IPersistPropertyBag에 대한 QueryInterface를 수행합니다. 어댑터가 인터페이스를 구현하는 경우 처리기 구성은 Load 메서드 호출에서 어댑터에 전달됩니다. 어댑터는 이 정보를 사용하여 구성이 올바른지 확인합니다.
메시징 엔진은 필수 인터페이스인 IBTTransportControl에 대한 QueryInterface를 수행합니다.
엔진은 IBTTransportControl.Initialize를 호출하여 어댑터의 전송 프록시를 전달합니다.
메시징 엔진은 IBTTransmitter에 대한 QueryInterface를 수행합니다.
메시징 엔진이 이 인터페이스를 발견하면 어댑터는 일괄 처리를 인식하지 못하는 전송기로 간주됩니다.
메시징 엔진이 이 인터페이스를 검색하지 않으면 메시징 엔진은 IBTBatchTransmitter에 대한 QueryInterface를 수행하며, 이 검색은 어댑터가 일괄 처리 인식 송신기임을 나타냅니다.
메시징 엔진이 이 두 인터페이스를 모두 발견하지 못하면 오류가 발생하여 초기화가 실패합니다. 필수 인터페이스가 발견되지 않으면 초기화가 실패합니다.
다음 다이어그램은 API 호출의 순서를 보여주는데 여기에서 파란색 인터페이스는 어댑터에 의해 구현됩니다.
어댑터는 초기화되고 구성되자마자 곧 메시지를 보낼 수 있습니다.
다음 그림은 송신 어댑터 초기화와 관련된 개체 상호 작용을 보여 줍니다.
송신 어댑터 초기화의 워크플로
참고
어댑터는 IBTTTransportControl.Initialize 및 IPersistPropertyBag.Load와 같은 호출에서 메시징 엔진을 차단해서는 안 됩니다. 이러한 호출에서 과도한 처리를 수행하면 서비스 시작 시간에 영향을 줄 수 있습니다.