次の方法で共有


送信アダプターのインスタンス化と初期化

既定では、送信アダプターは、最初のメッセージ ("遅延作成" と呼ばれるプロセス) が配信されるまでインスタンス化されません。既定の遅延作成アプローチは、システム リソースを節約するのに役立ちます。 送信アダプターが作成されると、そのアダプターはキャッシュされ、BizTalk Server サービスが停止するまで有効になります。

Capabilities 列挙体の InitTransmitterOnServiceStart メンバーは、必要に応じて、既定の遅延作成を使用するのではなく、サービス起動時に送信アダプターを作成するようにメッセージング エンジンに指示します。

メッセージの送信は、メッセージのバッチ処理に関してメッセージを受信するモデルとは異なります。 受信ケースでは、アダプターには、メッセージング エンジンから取得したバッチに挿入する受信メッセージがあります。 送信の場合、メッセージング エンジンはアダプターからバッチを取得し、送信するアダプターにメッセージを送信します。 どちらもトランスポート プロキシを使用してメッセージ バッチ オブジェクトを取得します。

送信アダプターの初期化方法

トランスポート プロキシへの構成とバインドを有効にするには、アダプターで次の構成インターフェイスを実装する必要があります。

  • IBTTransport

  • IBaseComponent

  • IBTTransportControl

  • IPersistPropertyBag

    次の手順では、送信アダプターの初期化に関連するイベントのシーケンスについて説明します。

  1. メッセージング エンジンは、送信アダプターを初期化するときに、最初に IPersistPropertyBagQueryInterface を実行します。これは省略可能なインターフェイスです。 アダプターがインターフェイスを実装する場合、ハンドラー構成は Load メソッド呼び出しでアダプターに渡されます。 アダプターはこの情報を使用して、正しく構成されていることを確認します。

  2. メッセージング エンジンは、必須インターフェイスである IBTTransportControlQueryInterface を実行します。

  3. エンジンは IBTTransportControl.Initialize を呼び出し、アダプターのトランスポート プロキシを渡します。

  4. メッセージング エンジンは、IBTTransmitterQueryInterface を実行します。

    メッセージング エンジンがこのインターフェースを検出した場合、アダプターはバッチ非対応の送信機として扱われます。

    メッセージング エンジンがこのインターフェイスを検出しない場合、メッセージング エンジンは IBTBatchTransmitterQueryInterface を実行します。この検出は、アダプターがバッチ対応の送信機であることを示します。

    メッセージング エンジンがこれらのインターフェイスを検出しなかった場合、エラー状態が発生し、初期化が失敗します。 必須インターフェイスが検出されない場合、初期化は失敗します。

    次の図は、この一連の API 呼び出しを示しています。青色のインターフェイスはアダプターによって実装されます。

    初期化が失敗した場合の動作を示す画像。

    アダプターは、初期化および構成されるとすぐにメッセージを送信できます。

    次の図は、送信アダプターの初期化に関連するオブジェクトの相互作用を示しています。

    送信アダプターの初期化に関連するオブジェクトの相互作用を示す画像。
    送信アダプターを初期化するためのワークフロー

アダプターは、 IBTTransportControl.InitializeIPersistPropertyBag.Load などの呼び出しでメッセージング エンジンをブロックしないでください。 これらの呼び出しで過剰な処理を実行すると、サービスの起動時間に影響します。