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 を受信するための送信ポートの設定