既定では、送信アダプターは、最初のメッセージ ("遅延作成" と呼ばれるプロセス) が配信されるまでインスタンス化されません。既定の遅延作成アプローチは、システム リソースを節約するのに役立ちます。 送信アダプターが作成されると、そのアダプターはキャッシュされ、BizTalk Server サービスが停止するまで有効になります。
Capabilities 列挙体の InitTransmitterOnServiceStart メンバーは、必要に応じて、既定の遅延作成を使用するのではなく、サービス起動時に送信アダプターを作成するようにメッセージング エンジンに指示します。
メッセージの送信は、メッセージのバッチ処理に関してメッセージを受信するモデルとは異なります。 受信ケースでは、アダプターには、メッセージング エンジンから取得したバッチに挿入する受信メッセージがあります。 送信の場合、メッセージング エンジンはアダプターからバッチを取得し、送信するアダプターにメッセージを送信します。 どちらもトランスポート プロキシを使用してメッセージ バッチ オブジェクトを取得します。
送信アダプターの初期化方法
トランスポート プロキシへの構成とバインドを有効にするには、アダプターで次の構成インターフェイスを実装する必要があります。
IBTTransport
IBaseComponent
IBTTransportControl
IPersistPropertyBag
次の手順では、送信アダプターの初期化に関連するイベントのシーケンスについて説明します。
メッセージング エンジンは、送信アダプターを初期化するときに、最初に IPersistPropertyBag の QueryInterface を実行します。これは省略可能なインターフェイスです。 アダプターがインターフェイスを実装する場合、ハンドラー構成は Load メソッド呼び出しでアダプターに渡されます。 アダプターはこの情報を使用して、正しく構成されていることを確認します。
メッセージング エンジンは、必須インターフェイスである IBTTransportControl の QueryInterface を実行します。
エンジンは IBTTransportControl.Initialize を呼び出し、アダプターのトランスポート プロキシを渡します。
メッセージング エンジンは、IBTTransmitter の QueryInterface を実行します。
メッセージング エンジンがこのインターフェースを検出した場合、アダプターはバッチ非対応の送信機として扱われます。
メッセージング エンジンがこのインターフェイスを検出しない場合、メッセージング エンジンは IBTBatchTransmitter の QueryInterface を実行します。この検出は、アダプターがバッチ対応の送信機であることを示します。
メッセージング エンジンがこれらのインターフェイスを検出しなかった場合、エラー状態が発生し、初期化が失敗します。 必須インターフェイスが検出されない場合、初期化は失敗します。
次の図は、この一連の API 呼び出しを示しています。青色のインターフェイスはアダプターによって実装されます。
アダプターは、初期化および構成されるとすぐにメッセージを送信できます。
次の図は、送信アダプターの初期化に関連するオブジェクトの相互作用を示しています。
送信アダプターを初期化するためのワークフロー
注
アダプターは、 IBTTransportControl.Initialize や IPersistPropertyBag.Load などの呼び出しでメッセージング エンジンをブロックしないでください。 これらの呼び出しで過剰な処理を実行すると、サービスの起動時間に影響します。