次の方法で共有


MLLP 送信アダプターの処理

最小下位層プロトコル (MLLP) 送信アダプターは、次の構成で一方向と双方向のトランスポート モードをサポートします。

  • 双方向送信請求応答送信アダプター

  • 受信確認 (ACK) を受信するように構成された一方向送信アダプター

  • 戻りメッセージがない場合に構成された一方向送信アダプター

双方向要請応答送信 MLLP アダプター

真のエンドツーエンド同期シナリオでは、このアダプターを使用します。 そのため、このアダプターは 1 つの宛先パーティでのみ使用できます。 送信アダプターは、要求応答受信ポートに戻りメッセージをルーティングするまで、リモート パーティ (URL) に対するオープン接続を継続的に維持します。 要求応答/要請応答処理のアーキテクチャについては、次の図を参照してください。

このアダプターを使用すると、ACK または応答メッセージを基幹業務アプリケーションに返すようにシステムに指示できます。 これを行うには、BTAHL7 構成エクスプローラーの [要求応答受信ポートでパイプラインを送信するルート ACK] 設定を使用します。 ACK を返す場合は、このプロパティを選択するか、応答会議を返す場合は選択解除します。

このアダプターを使用する送信ポートが元のメッセージを正常に送信すると、BTAHL7 はそのメッセージを削除します。 この送信ポートに関連付けられている受信パイプラインでは、ACK は生成されません。 BizTalk は、その応答の MSA2 フィールドの値に関係なく、クエリ応答をソース アプリケーションに転送します。

AK を受信するように構成された一方向送信 MLLP アダプター

このアダプターは、元のメッセージを送信するのと同じソケット接続で AK を受信し、AKS を受信場所に配信します。 送信アダプターは、リモート パーティ (URL) に対して開いている接続を維持し続けます。これは、BizTalk Serverが送信を待機しているメッセージがない場合でもです。 複数のポートが同じリモート パーティを指している場合、送信アダプターは送信ポートごとに 1 つの接続を維持します。

Microsoft BizTalk Accelerator for HL7 (BTAHL7) セットアップでは、既定の受信場所 TwoWayAckReceiveLocation がインストールされます。 この受信場所は、AKS を受信するための MLLP 送信アダプターと共に使用できます。 このアダプターを使用して送信ポートを構成するには、受信場所を送信ポートに関連付ける必要があります。

MSA フィールドを含む応答メッセージを受信するように設定されている場合、または複数の宛先をサポートするように設定されている場合は、この送信ポートを使用します。 双方向要請応答アダプターは、MSA フィールドまたは複数の宛先では機能しません。

一方向 MLLP 送信アダプターによって受信された受信確認

ACK 用に構成された一方向 MLLP 送信アダプターが 1 つを受信すると、BizTalk Serverは、ACK の種類に応じて、元のメッセージを MessageBox データベースから削除するか、再試行するか、中断します。 BTAHL7 は、次の 2 つのフェーズで ACK を解析します。

  • 最初のフェーズは、BTAHL7 がフィールド MSA1 を解析して ACK の種類を決定する送信アダプターで行われます。

  • 2 番目のフェーズでは、BTAHL7 は ACK の完全な解析を実行し、ACK を MessageBox データベースに送信します。

    BTAHL7 構成エクスプローラーで双方向送信アダプターが想定する ACK を構成します。

    次の表は、MLLP 送信アダプターが受信できる ACL と、元のメッセージに対する結果のアクションを示しています。

受信した ACK 元のメッセージに対するアクション
コミットの承諾、またはアプリケーションの承諾 MessageBox データベースから削除する
コミット/アプリケーション、ACK の拒否、または無効な ACK [中断]
コミット/アプリケーション エラー 再試行/バックアップ トランスポートへの移動/中断
静的 ACK の成功 MessageBox データベースから削除する
静的 ACK エラー [中断]

次の表は、無効な ACK 条件を示しています。

インスタンス 条件
HL7 (元、拡張、遅延) 1. XML が含まれていません。
2. 構造がないため、MSA1 フィールドを取得できません。または、MSA1 フィールドに許容される値 (CA、AA、CR、AR、CE、AE) が含まれていません。
スタティック 成功または失敗 ACK の許容される値の 1 つと一致しません。
XML を含む (コンテンツに関係なく) 受け入れ ACK として扱われ、元のメッセージを削除します。

エラー条件

エラー状態または非アクティブ状態の場合は、次の現象が発生する可能性があります。

  • 送信メッセージがシリアル化で失敗した場合、BTAHL7 がストリーミングしているバッチ メッセージでない限り、送信アダプターはメッセージを送信しません。 その場合、BTAHL7 がメッセージの途中でシリアル化エラーを検出した場合、BizTalk Serverが完全なメッセージを送信していないため、アダプターは EB/CR を送信しません。 パイプラインによってエラーがログに記録され、アダプターはバッチ メッセージの送信を再試行します。

  • 送信操作が失敗した場合、アダプターは、送信ポート構成設定で指定された再試行回数まで、メッセージの再送信を試みます。 再試行を使い果たした後、メッセージはバックアップ トランスポート (存在する場合) に移動します。 それ以外のすべてが失敗した場合、メッセージは中断されます。 中断されたメッセージは、元の (XML) 形式になります。

    BTAHL7 では、次のイベントを生成して、エラーの状態を記述できます。

Event id エラー条件
ErrorSendingMessage 8450 リモート パーティにメッセージを送信できませんでした。 最も一般的な理由は、ネットワーク障害またはタイムアウトです。 大きなメッセージのシリアル化中に送信パイプラインが失敗した場合、BTAHL7 によってこのエラーが報告される場合があります。
ErrorReceivingAck 8451 ネットワーク障害またはタイムアウトのため、受信確認を受信できませんでした。
ErrorConnecting 8453 リモート パーティへの TCP 接続を確立できませんでした。ホスト名を解決できなかったか、リモート パーティがポートでリッスンしていないか、接続を拒否しています。

注意

(元のメッセージの MSH5 の) 宛先パーティの構成によって、BTAHL7 が HL7 と静的 ACK のどちらを使用するかを決定します。 不一致の場合、BTAHL7 は ACK を無効として扱います。

MLLP 送信アダプターが ACK を処理すると、ACK はそれ自体でメッセージとして受信場所に配信されます。 逆アセンブラーは ACK の完全な解析を実行します。これにより、解析エラーが受信パイプラインによって報告されたり、ACK が中断されたりする可能性があります。

参照

MLLP でエンコードされたメッセージの処理
送信および受信アダプターの構成パラメーター
MLLP 受信アダプターの処理
ACK を受信するための送信ポートの設定