バックグラウンド:
ここ (BizTalk 2009) で説明されているSeroter のラウンド ロビン手法と同様に、多くの集約、シングルトン、マルチトン オーケストレーションを利用しています。
これらのすべてのオーケストレーション タイプには、かなり任意の終了ポイントまたは継続ポイント (集約用) があり、通常はタイマーによって定義されます。つまり、Orch が X 分以内にそれ以上メッセージを受信しなかった場合はバッチ処理を続行し、さらに Y 分経過した場合はバッチ処理を続行します。経過し、メッセージがなくなったら終了します。(一定期間に多数のメッセージがシングルトンにサブスクライブされた後のパフォーマンスの低下に関する懸念から、シングル/N-トンも終了します)。
非同期にリファクタリングされたオーケストレーションで継続処理を開始するなど、ゾンビを軽減しようとしてきた限り、「適切な」タイミングのメッセージがゾンビを引き起こす可能性があるという弱点が常にあります。(つまり、オーケストレーションの「すでに完了している」形状に関連する着信メッセージをより多く受信する)、
メッセージがサブスクリプションの 1 つでゾンビを引き起こした場合、そのメッセージは他のサブスクライバーにも伝搬されないように見えます (つまり、「ゾンビを引き起こす」オーケストレーションから完全に切り離された orch)、つまり、ゾンビを引き起こしたメッセージは処理されません。
質問
したがって、オーケストレーションがこの相関メッセージに関心のあるポイントを超えて「進行」した後、プログラムまたはその他の方法で、実行中のオーケストレーションから相関サブスクリプションを明示的に削除する別の方法があるかどうかを確認することに非常に興味があります。(この新しいメッセージは、通常、独自の相関などを使用して新しいオーケストレーションを開始します)
この時点で、リフレクトされた BizTalk API 呼び出しや、MsgBoxDB に対する直接の SQL 削除などのハック ソリューションも検討します。