0

サービスバストピックのサブスクリプションからメッセージを削除するための最良の方法(ポータル、Powershell、またはC#経由であっても)が不思議です。サービスバストピックサブスクリプションのメッセージを削除する方法

サブスクリプションが4つのトピックがあるとします.1つのサブスクリプションからのメッセージのみをパージしたいとします。

私は、whileループでメッセージを読むのが唯一の方法かもしれないと感じていますが、より良いものを望んでいます。

UPDATE:答えで提案されているように

以外のコードを使用してから、[サーバーエクスプローラを使用することができます - 右のサブスクリプションをクリックして、メッセージを削除:

enter image description here

+0

SBExplorerを使用すると、「受信メッセージ」に「受信と削除」オプションを使用することもできます。この問題のサーバー側をサポートするトラッキングの問題があります:https://github.com/Azure/azure-service-bus/issues/1 –

答えて

0

あなたは最も確か経由でそれを行うことができますコード。あなたがService Bus SDKを使用している場合は、次のような何か行うことができます:このコードは何をするか

static void PurgeMessagesFromSubscription() 
    { 
     var connectionString = "Endpoint=sb://account-name.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=access key"; 
     var topic = "topic-name"; 
     var subscription = "subscription-name"; 
     int batchSize = 100; 
     var subscriptionClient = SubscriptionClient.CreateFromConnectionString(connectionString, topic, subscription, ReceiveMode.ReceiveAndDelete); 
     do 
     { 
      var messages = subscriptionClient.ReceiveBatch(batchSize); 
      if (messages.Count() == 0) 
      { 
       break; 
      } 
     } 
     while (true); 
    } 

をするようにとすぐにメッセージがフェッチされるようReceive & Deleteモードでのサブスクリプション(時刻100)からメッセージをフェッチサブスクリプションから自動的に削除されます。

私はService Bus Explorerツールもメッセージをパージする機能を持っていると信じています。コードを書くのではなく、それを使うこともできます。

+0

クール、ありがとうGaurav –

1

多くのメッセージがあり、サブスクライバ側で少しのダウンタイムを許容できる場合は、サブスクリプションを削除して同じ名前の新しいメッセージを作成するほうが速い場合があります。

+0

これは面白いです! Azure Service Busがサブスクリプションの削除にどれくらいの時間を要するか知っていますか?ストレージ・キューの経験から、キューが実際に削除されるまでに30秒以上かかることがあります。その前に、同じ名前の新しいキューを作成できます。 –

+0

私は正式なタイミングはありませんが、何度かやりました。 – Mikhail

関連する問題