2011-09-20 7 views
5

が背景明示のBizTalkオーケストレーション内からサブスクリプションを削除するには、どのような方法:ここで説明Seroter's Round Robin技術に類似のBizTalkゾンビ -

我々は集約、シングルトンとmultitonオーケストレーションの多くを利用して、(のBizTalk 2009) 。

これらのオーケストレーションタイプはすべて、通常はタイマーによって定義されるかなり集約的な出口または継続ポイントを持っています。つまり、OrchがX分以内にそれ以上のメッセージを受信して​​いない場合、 Y分以上経過してメッセージがなくなった後に終了します。 (また、degraded performance after large numbers of messagesに関する懸念がある期間にわたってシングルトンにサブスクライブされているため、シングル/ Nトーンを終了します)。

私たちがゾンビに対して緩和しようとしたように、非同期のリファクタリングされたオーケストレーションで継続処理を開始することによって、「よく」タイムド・メッセージがゾンビを引き起こす可能性のある弱点が常に存在します。

メッセージがサブスクリプションの1つにゾンビを引き起こした場合、そのメッセージは他のサブスクライバにも伝えられていないようです(つまり、orchs(つまり、orchs)はオーケストレーションの「既に完了した」形状に関連付けられています) 「ゾンビを引き起こしている」オーケストレーションから完全に切り離されている)、すなわちゾンビを引き起こすメッセージは処理されない。

質問

だから私は、オーケストレーションはどこのポイントを超えて「進行」したら、明示的に実行しているオーケストレーションから相関サブスクリプションを削除するために、プログラムまたはそうでなければ、誰もが別の方法を持っている場合は見ることに非常に興味がありますこの相関メッセージに興味があります。

この時点では、MsgBoxDBに対して、反映されたBizTalk API呼び出しや直接SQL削除などのハッキングソリューションも検討されます。

+0

このperf。問題は2006年で、オーケストレーションを停止する必要がありますか?私はそのパターンをbt2009で成功した大量のメッセージと共に使用しました。オーケストレーションは継続的に実行されました。安全にそれらをシャットダウンするために、私は音源を停止し、次にオーケストレーションを止めました。 –

+0

残念ながら、着信トラフィックのほとんどはシングルMQキューから来ているため、受信ポートを停止するとすべてのアプリケーションに影響します。しかし、あなたが正しいです - 真実の証拠よりも漏洩に関する「懸念」のケースです(例えば、シングルトンに添付​​された50k +メッセージが気になることを見てください)。例外的な負荷の下では、シングルトンオーチのいくつかを一時停止すると正常に動作し、サーバが回復/完了するとすぐに再開します(デザインによっては、レイテンシが重要ではないメッセージだけがシングルトン/ラウンドロビンに割り当てられるため)。 – StuartLC

+0

既存のキューと現在の受信者の間に別のキューを追加することはできますか?そうすれば、新しいレシーバーを停止し、オーケストレーションを正常に終了することができます。 –

答えて

1

いいえオーケストレーションでサブスクリプションを明示的に削除することはできません。

オーケストレーションが引き裂かれるとサブスクリプションが削除されますが、その正確なインスタンスに到着したメッセージはオーケストレーションにルーティングされますが、オーケストレーションは処理せずに終了します。これがゾンビです。ゾンビhttp://msdn.microsoft.com/en-us/library/bb203853.aspx

について

マイクロソフトの記事私は一度もパターンを送信、受信、デバッチ、集計を持っていなければなりませんでした。複数の送信者からエンベロープされたメッセージを受信し、それらをデバッチし、意図した受信者によって集約します(2つのルール、メッセージ数または時間遅延のいずれか最初に発生したいずれかに基づいて)。 このシナリオはゾンビにとって熟していました。私がそれらについて読むと、私はそれが起こらないように設計しました。これはBizTalk 2004 のためのもので、メッセージを討議してデータベースに挿入しました。私は受信ポートでポーリングされたストアドプロシージャを持っていました。送信ポートがあれば、そのメッセージを受け取り動的にルーティングするOrcherstrationがトリガーされます。 オーケストレーションはどちらも、別のメッセージを待たなければならないので、正常に終了し、ゾンビはありません。