如何在 C# (Microsoft.Azure.ServiceBus v3+) 中清除 Azure 服务总线主题订阅?

How to purge a Azure ServiceBus Topics Subscrption in C# (Microsoft.Azure.ServiceBus v3+)?

我如何(在 C# 中)使用 Microsoft.Azure.ServiceBus 包(版本 3+)清除 Azure 服务总线的主题订阅?

我知道 SO 。但是选择的答案似乎在 SubscriptionClient 上使用 ReceiveBatch() ,它似乎不再可用(?)。 SubscriptionClient 现在似乎只有 RegisterMessageHandler() 来处理消息,但是使用这意味着我的客户永远不知道订阅什么时候实际上是空的。

是否有使用 C# 清除主题的简洁方法?

您可以以类似的方式使用 MessageReceiver class:

IMessageReceiver messageReceiver = new MessageReceiver(
    namespaceConnectionString,
    EntityNameHelper.FormatSubscriptionPath(topicName, subscriptionName),
    ReceiveMode.ReceiveAndDelete);

int batchSize = 100;
var operationTimeout = TimeSpan.FromSeconds(3);

do
{
    var messages = await messageReceiver.ReceiveAsync(batchSize, operationTimeout);
    if (messages == null || messages.Count == 0) // Returns null if no message is found
    {
       break;
    }
}
while (true);

请注意,现在只有异步 API 可用。