次の方法で共有


逆アセンブリ ステージ (回復可能なインターチェンジ処理)

インターチェンジは、逆アセンブリ ステージにおいて 2 つのモードで処理されます。

  • 標準モード: 受信パイプラインの逆アセンブラー コンポーネントが構成されて標準の逆アセンブリが行われる場合、インターチェンジに含まれるメッセージの抽出、受信パイプラインによるメッセージの処理、メッセージのマップ、およびトランザクションの作業単位としてのメッセージの公開が行われます。 つまり、インターチェンジ全体と含まれるメッセージがすべて処理されて、メッセージ ボックス データベースに公開されます。または、保留キューにインターチェンジが配置されます。

  • 回復可能なモード: 受信パイプラインの逆アセンブラー コンポーネントが 回復可能なインターチェンジ処理を実行するように構成されている場合、インターチェンジに含まれるメッセージは互いに独立して抽出されます。 抽出に成功したメッセージは、受信パイプラインの下に反映されます。 インターチェンジ内で確認されたメッセージの抽出に失敗した場合、そのメッセージは、保留キューに配置されます。

次の例は、インターチェンジ処理のシナリオを示しています。

例 1

この例では、標準のインターチェンジの受信場所で次の疑似インターチェンジが送信されます。 つまり、受信パイプラインの逆アセンブラー コンポーネントが構成されて、標準のインターチェンジ処理が行われます。

<Interchange>  
<Document1>...</Document1>  
<Document2 failure=”routing”>...</Document2>  
<Document3>...</Document3>  
<Document4 failure=”pipeline” recoverableError=”true”>...</Document4>  
<Document5>...</Document5>  
</Interchange>  

このインターチェンジには、5 つのメッセージが含まれます。これらのメッセージは、逆アセンブラーによるインターチェンジからの抽出が成功したメッセージです。 これらのメッセージは、次のように処理されます。

  • 1 番目から 3 番目までのメッセージは、パイプラインを通じて伝達され、公開用のメッセージとなります。

  • 4 番目のメッセージは、パイプラインの逆アセンブリ ステージで処理に失敗します。 このため、ロールバックされているすべてのメッセージと元のインターチェンジ メッセージが再開可能な状態で保留されます。

    送信結果は次のとおりです。

  • 何も公開されません。 標準のインターチェンジ処理で、抽出されたメッセージのインターチェンジ処理中 (または処理後) に障害が発生した場合、すべての抽出されたメッセージが破棄され、元のインターチェンジは再開可能な状態で保留キューに配置されます。このため、元のインターチェンジが保留されます。

例 2

この例では、前の例と同じインターチェンジ処理と伝達シナリオを使用します。逆アセンブリ ステージを構成して回復可能なインターチェンジ処理が行われる点が異なります。

送信の結果、抽出された各メッセージがすべて処理され、元のインターチェンジが破棄されます。 各メッセージは、次のように処理されます。

  • 1 番目から 3 番目までのメッセージは、パイプラインを通じて伝達され、公開用のメッセージとなります。

  • 4 番目のメッセージは、逆アセンブリ処理に失敗し (抽出後に不具合が発生する)、保留用のメッセージとなります。

  • 5 番目のメッセージは、パイプラインを通じて伝達され、公開用のメッセージとなります。

  • すべてのメッセージがインターチェンジから抽出されると、メッセージ 1、メッセージ 2、メッセージ 3、およびメッセージ 5 は、メッセージ ボックス データベースに公開され、メッセージ 4 は、保留キューに配置されます。 また、一致するサブスクライバーがないためにルーティング エラーが発生すると、メッセージ 2 が保留キューにリダイレクトされます。

回復可能なインターチェンジ処理の構成

回復可能なインターチェンジ処理は、受信パイプラインの逆アセンブラー コンポーネントのプロパティです。 すべての逆アセンブラー コンポーネントで回復可能なインターチェンジ処理を指定できるとは限りません。たとえば、ネイティブの BizTalk Framework 逆アセンブラーでは、このような処理を指定できません。 逆アセンブラーで回復可能なインターチェンジ処理がサポートされている場合は、設計されているパイプラインの逆アセンブリ ステージに逆アセンブラー コンポーネントを追加するときに、Visual Studio 内のパイプライン Designerでこの動作を指定します。 選択した逆アセンブラーをパイプラインの逆アセンブリ ステージにドラッグした後、その逆アセンブラー コンポーネントの回復可能なインターチェンジ処理プロパティを に true設定します。

パーティの解決

回復可能なインターチェンジ処理での抽出に成功したメッセージは、親のインターチェンジが到着する受信ポートに対して構成されているパーティに応じて、送信するパーティを確認します。 特定のインターチェンジから抽出されたメッセージでパーティの解決が失敗した場合、パーティの解決は、インターチェンジ全体で失敗したと見なされます。

制限

  • インターチェンジが逆アセンブラーで失敗すると、インターチェンジは再開可能な状態で中断されます。 ただし、インターチェンジが管理の都合上再開されても、再度エラーが発生します。これは、逆アセンブリ エラーを引き起こす種類のエラーが、単にインターチェンジの内容 (インターチェンジが再開されても同じままになっている) による結果であるためです。 このような失敗したインターチェンジは変更して、受信場所を通じて再送信する必要があります。

  • サブスクライバーの不一致が原因で、インターチェンジからの抽出に成功したメッセージがメッセージの伝達に失敗した場合、メッセージが再開可能な状態で中断されます。 ルーティング エラーを解決すると、管理上の理由から、このメッセージを再開できます。

  • 逆アセンブラー コンポーネントは、逆アセンブラー コンポーネントで次のエラーが発生しても、インターチェンジからのメッセージの抽出を続けます。

    • スキーマが見つからない。

    • スキーマのあいまいさが解決されない (同じメッセージの種類に複数のスキーマが存在する)。

    • XML 検証が失敗した。

    • フラット ファイル解析が失敗した。

  • 逆アセンブラー コンポーネントで次のエラーが発生した場合、逆アセンブラー コンポーネントはインターチェンジからメッセージを引き続き抽出 しません

    • ドキュメントのデータが整形式 XML ではなく、System.Xml.XmlReader が失敗するドキュメント プロパティである。

参照

XML 逆アセンブラー パイプライン コンポーネントを構成する方法
フラット ファイル逆アセンブラー パイプライン コンポーネントを構成する方法