非同期送信アダプター用のインターフェイス
一度に 1 つのメッセージを送信するアダプターは、同期的または非同期的にメッセージを送信できます。 アダプターは、送信操作中にトランスポート プロキシ スレッドをブロックせずに、個々のスレッドを使用する場合、メッセージを非同期的に送信します。 メッセージを非同期的に送信できるようにするには、アダプターに次のインターフェイスを実装する必要があります。
IBTTransport
IBaseComponent
IBTTransportControl
IPersistPropertyBag
IBTTransmitter
送信アダプターは、メッセージ エンジンの要求時にメッセージをサーバーから送信するとき、次の順序でアクションを実行します。
メッセージング エンジンは、IBTTransmitter インターフェイスの TransmitMessage メソッドを呼び出すことによって、トランスポート プロキシを使用して送信メッセージを送信アダプターに渡します。
アダプターは、内部キューに送信されるメッセージを格納した直後に TransmitMessage からを返し、bDeleteMessage に対して を返します
False
。 これにより、メッセージが非同期で送信されることがメッセージング エンジンに伝えられます。アダプターは、その独自のスレッド プールを使用してメッセージを送信します。
送信操作が完了すると、アダプターは元のメッセージをメッセージ ボックス データベースから削除します。 トランスポート プロキシの IBTTransportBatch.GetBatch メソッドを使用してメッセージング エンジンからバッチを取得し、 DeleteMessage を呼び出します。
非同期送信アダプターを作成するときの、オブジェクト間の対話処理を次に示します。
メッセージの非同期送信のワークフロー
Note
アダプターでは現在処理中のメッセージ数を保持することをお勧めします。 アダプターは、メッセージ数が 0 に達するまで Terminate メソッドをブロックする必要があります。 送信アダプターの場合、処理されるメッセージは適切に処理する必要があります。 つまり、非同期で正常に送信されたメッセージは、アダプターのプライベート アプリケーション メッセージ キューから削除して、メッセージが 2 回送信されるのを防ぐ必要があります。 一般に、 Terminate がメッセージング エンジンによって呼び出された後、アダプターからの新しいメッセージを発行する要求は受け入れません。 送信請求 - 応答の組み合わせに関連する応答メッセージの場合は例外です。
参照
アダプター変数
送信アダプターの開発
送信アダプターのインスタンス化と初期化
同期送信アダプター用のインターフェイス
バッチ処理に対応した同期送信アダプター用のインターフェイス
バッチ処理に対応した非同期送信アダプター用のインターフェイス
バッチ処理に対応したトランザクションとしての非同期送信アダプター用のインターフェイス
送信請求 - 応答送信アダプター用のインターフェイス