2012-11-02 21 views
6

私が念頭に置いているシナリオは次のとおりです。サービスバスはインスタンス間の通信に使用されるため、サブスクリプションはサービスインスタンスごとに一意です。最終的には、インスタンスが正常にシャットダウンしないと、そのサブスクリプションが削除されないということです。孤立した孤立したサブスクリプション(Azure ServiceBus Messaging SubscriptionClient)

サービスインスタンスが「停止」して再起動した場合、以前のサブスクリプションのコンテンツは無関係であり、破棄することができます。

サービスバスサブスクリプションの「有効期間」を設定する方法や、カスタムオーファン検出メカニズムに頼らずに同様のシミュレーションを行う方法はありますか?

答えて

4

正確な機能は、次のリリースのバックログにあります。つまり、紺碧では、ロール環境のインスタンスIDを使用してサブスクリプションの名前を作成し、再起動するインスタンスにサブスクリプションを再利用させることができます。インスタンスID名は安定しています。

編集:(以下の例を参照)これは非常に使いやすいですhttp://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.subscriptiondescription.autodeleteonidle.aspx

:機能AutoDeleteOnIdle https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.subscriptiondescriptionある

+0

あなたの答えをありがとう、クレメンス。インスタンスIDを使用してサブスクリプション名を作成するのはまさに私たちがやっていることですが、まだPID番号を使って開発ファブリックインスタンス名を生成しているすべてのデバッグセッションからかなりのゴミが残っています。 –

+1

@Clemensはこれがいつリリースされるか考えていますか? –

+0

これがリリースされる時期も探しています。クライアントあたりのSilverlightクライアントのサブスクリプションにも同様の用途があります。失効したサブスクリプションを検索してトピック名を知っている場合は、独自のクリーンアップをロールするオプションがあります。 :http://stackoverflow.com/questions/15871119/cleaning-up-stale-azure-service-bus-topic-subscriptions – kjsteuer

0

私はプレビューは、それが2013年の初めにリリースされた解決、まったく同じ問題を抱えていました。残念ながら、AutoDeleteOnIdle期間に公開されたメッセージがない場合、メッセージを待っているプロセスがあっても(Azure Servicebus AutoDeleteOnIdleによる)、サブスクリプションがタイムアウトするようです。

NamespaceManager manager=NamespaceManager.CreateFromConnectionString(serviceBusConnectionString); 
if(!manager.SubscriptionExists(topic,subscriptionName)) 
{ 
    manager.CreateSubscription(new SubscriptionDescription(topic,subscriptionName) { 
     AutoDeleteOnIdle=TimeSpan.FromDays(2) 
    }); 
} 
6

Azure SDK 2.0からは、期待どおりに動作します。

また、他のレポートとは対照的に、私のテストでは、そのサブスクリプションを聞いている保留中のレシーバがある限り、サブスクリプションは削除されません。

var description = new SubscriptionDescription(topicPath, subscriptionId); 
description.AutoDeleteOnIdle = TimeSpan.FromSeconds(600); 
namespaceManager.CreateSubscription(description);