クラッシュまたはその他の異常な終了(インスタンスの再起動など)が原因で、キュー、トピック、またはサブスクリプションの読み取りまたは書き込みを行うパブリッシャーまたはサブスクライバーがなくなった場合、そのキュー/トピック/サブスクリプションは事実上孤立していますか?
いくつかのキューを作成してからアプリケーションを終了することで、これをテストしました。それらのキューは、ずっと後もサービスバス上にありました。彼らは永遠にそこにとどまるようです。その振る舞いを望んでいればそれは素晴らしいことですが、この場合はそうではありません。
これらのキュー、トピック、およびサブスクリプションをどのように検出して削除できますか?これらはAzureの制限などにカウントされ、インスタンスが再起動/パッチ適用/クラッシュするたびにこれらの孤立したプロセスを持つことはできません。
質問を明確にするのに役立つ場合、これは、キュー/トピック/サブスクリプションに特別な名前または特別なフィルターがあり、限られた時間のパブリッシャー(1)とサブスクライバー(1)のセットが非常に限られているという独特の状況です。これは、私たちが存続可能性を求めている場合ではありません。これらはインスタンス固有の応答チャネルです。キューとサブスクリプションのどちらを使用するかは重要ではありません。インスタンスがなくなった場合は、そのキュー(またはサブスクリプション)も必要になります。
これは、各Webロールが監視する専用の応答チャネルを持つソリューションの一部です。いつでも、このWebロールには、他のメッセージングチャネル(キュー/トピック)を介して保留中の数十の要求があり、複数のスレッドで応答を待機しています。Webロールが呼び出し元に応答できるように、メッセージを配置したスレッドに戻るための応答が必要です。この状況では、他のスレッドのメッセージを受信するため、マシンに基づいてサブスクリプションを作成するのは適切ではありません。専用の応答チャネルを確立するために各公開スレッドが必要です。そのため、そのチャネル上の唯一のものはそのスレッドの応答です。
サブスクリプション(ある種のインスタンス関連フィルターを使用)を使用してサブスクリプションでロングポーリング受信操作を実行したとしても、Webロールインスタンスが停止すると、そのサブスクリプションは孤立しますよね?
この質問は、次のように要約できます。キュー/トピック/サブスクリプションのパブリッシャーまたはサブスクライバーがこれ以上ない場合、そのサービスは事実上孤立しています。これらの孤児をどのように検出してクリーンアップできますか?