BizTalk Server のゾンビ
ゾンビとは
ゾンビ メッセージとは、メッセージ ボックスから実行中のオーケストレーションに渡され、オーケストレーションの終了時に "インフライト" であったメッセージのことです。 "インフライト" メッセージとは、サービス インスタンスに回送され、そのサービス インスタンス宛てのメッセージ ボックス キューに入っているメッセージのことです。 このメッセージは、サブスクライブを行なうオーケストレーション インスタンスによって処理されません。そのため、メッセージが中断され、メッセージの ServiceInstance/状態値が "中断 (再開不可)" になります。
ゾンビ サービス インスタンスとは、メッセージ ボックスからオーケストレーション インスタンスに回送されたメッセージがまだ "インフライト" であったときに終了したオーケストレーション インスタンスのことです。 オーケストレーション インスタンスが既に終了しているため、"インフライト" メッセージは処理されません。そのため、メッセージが中断され、メッセージの ServiceInstance/状態値が "中断 (再開不可)" になります。
一般的な原因
ゾンビの発生は一般的に、次のカテゴリのいずれかに分類されます。
制御メッセージを終了 する – オーケストレーション エンジンでは、コントロール メッセージを使用して、特定のオーケストレーション インスタンスで現在実行中のすべての作業を取り消すことができます。 コントロール メッセージを使用すると、実行中のオーケストレーションが直ちに終了するため、ゾンビ インスタンスが発生する可能性があります。 このメカニズムは、ヒューマン ワークフロー関連の設計で頻繁に使用される傾向があります。また、その他の設計でも使用される場合があります。
並列リッスン受信 – このシナリオでは、サービス インスタンスは 1 個の n 個のメッセージを待機し、特定のメッセージを受信すると、何らかの処理を行って終了します。 サービス インスタンスの終了時に並列分岐でメッセージが受信された場合、ゾンビが発生します。
非決定論的エンドポイントを持つシーケンシャルコンボイ – このシナリオでは、マスター オーケストレーション スケジュールは、特定の種類のシステム設計要件を満たすために、特定の種類のすべてのメッセージを処理するように設計されています。 こうした設計要件の例として、順次配送、リソース ディスペンサー、バッチ処理などがあります。 このシナリオでは、一方の分岐に受信があり、もう 1 つは遅延形状を持ち、その後に while ループが停止する必要があることを示す変数を設定するコンストラクトを持つリッスンを囲む while ループを定義する傾向があります。 これは非決定的です。なぜなら、メッセージが配信可能な場合でも遅延が発生する可能性があるからです。 このような非決定的なエンドポイントでは、ゾンビが発生する可能性が高くなります。
ゾンビ サービス インスタンスが中断されると、次のエラー メッセージが生成されます。
0xC0C01B4C The instance completed without consuming all of its messages. The instance and its unconsumed messages have been suspended.
BizTalk ターミネータを使用すると、ゾンビを削除できます。
参照
UI ガイダンスと開発者 API 名前空間リファレンスでの中断されたサービス インスタンスの削除