次の方法で共有


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

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

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

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

送信アダプターの初期化

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

  • IBTTransport

  • IBaseComponent

  • IBTTransportControl

  • IPersistPropertyBag

    送信アダプターの初期化に関連する一連のイベントを次に示します。

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

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

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

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

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

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

    これらのどちらのインターフェイスも検出されなかった場合、エラー状態となり、初期化が失敗します。 必須のインターフェイスのうち 1 つでも検出されないものがあると、初期化は失敗します。

    この API の呼び出しの順序は、次の図のようになります。アダプターは、青色で示されるインターフェイスを実装します。

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

    アダプターは初期化して構成された時点で、すぐにメッセージを送信できるようになります。

    送信アダプターを初期化するときの、オブジェクト間の対話処理を次に示します。

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

Note

アダプターは、 IBTTransportControl.InitializeIPersistPropertyBag.Load などの呼び出しでメッセージング エンジンをブロックしないでください。 これらの呼び出しで過度な処理を実行した場合、サービスの開始が遅れる可能性があります。