如何清除服务总线主题订阅的消息

Ste*_*nar 7 c# powershell azure azureservicebus azure-servicebus-topics

只是想知道从服务总线主题的订阅中清除消息的最佳方法(即使通过 Portal、Powershell 或 C#)。

假设我们有一个有 4 个订阅的主题,我们只想从其中一个订阅中清除消息。

我有一种感觉,唯一的方法可能是在 while 循环中阅读消息,但希望有更好的结果。

更新:

除了使用代码之外,您还可以按照答案中的建议使用服务器资源管理器 - 右键单击​​订阅并清除消息:

在此处输入图片说明

Gau*_*tri 7

你当然可以通过代码来做到这一点。如果您正在使用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);
    }
Run Code Online (Sandbox Code Playgroud)

此代码将在Receive & Deletemode 中从订阅中获取消息(一次 100 条),以便一旦获取消息,它们就会自动从订阅中删除。

我相信Service Bus Explorer工具也有清除消息的能力。您也可以使用它而不是编写代码。