CloudQueueClient类中“结果段”的含义

时间:2016-09-23 17:18:40

标签: azure azure-webjobs azure-webjobssdk

我看到很多参考文献提到CloudQueueClient类中的术语“结果段”,例如方法“ListQueuesSegmented”和“ListQueuesSegmentedAsync”。但我没有找到关于如何使用这些功能的任何有意义的例子。 Azure专家可以解释一下吗?

由于

德里克

2 个答案:

答案 0 :(得分:4)

创建存储帐户时,您可以在其中创建无限数量的队列(有关详细信息,请参阅storage limits)。

假设您想获取有关所有队列的信息,您可以使用CloudQueueClient.ListQueues方法遍历所有队列:

var storageAccount = CloudStorageAccount.Parse("MyConnectionString");
var queueClient = storageAccount.CreateCloudQueueClient();
foreach(var queue in queueClient.ListQueues())
{
    // Do something
}

想象一下,你有一千个队列,你可能不想执行这个请求,因为它可以超时,达到一定的限制。

Segmented 方法的所有目的。它将返回前X个元素+一个允许您请求下一个X元素的标记。

当您使用表格显示数据时(在UI端),有时您必须使用分页,因为您的表格可能太大而无法完全显示:这是相同的概念。

现在如果你想使用它:

// Initialize a new token
var continuationToken = new QueueContinuationToken();

// Execute the query
var segment = queueClient.ListQueuesSegmented(continuationToken);

// Get the new token in order to get the next segment
continuationToken = segment.ContinuationToken;

// Get the results
var queues = segment.Results.ToList();

// do something
...


// Execute the query again with the comtinuation token to fetch next results
segment = queueClient.ListQueuesSegmented(continuationToken);

答案 1 :(得分:1)

https://github.com/Azure-Samples/storage-queue-dotnet-getting-started/blob/master/QueueStorage/Advanced.cs上有一些如何使用这些功能的示例

关于如何通过ListQueuesSegmentedAsync进行分页的特定方法是:(注意初始化为空令牌似乎是正确的,就像检测到用于终止链的空令牌一样)

            Console.WriteLine(string.Empty);
        Console.WriteLine("List of queues in the storage account:");

        // List the queues for this storage account 
        QueueContinuationToken token = null;
        List<CloudQueue> cloudQueueList = new List<CloudQueue>();

        do
        {
            QueueResultSegment segment = await cloudQueueClient.ListQueuesSegmentedAsync(token);
            token = segment.ContinuationToken;
            cloudQueueList.AddRange(segment.Results);
        }
        while (token != null);