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