2

我在 Eclipse 中使用 Azure SDK,并尝试检索与服务总线关联的所有队列的列表。我能够正确连接到服务总线,但是当我调用 listQueues 时,它只返回前 100 个队列(大约有 130 个)

ListQueuesOptions options = new ListQueuesOptions();

    options.setTop(200);
    options.setSkip(0);

    System.out.println(options.getTop());

    ListQueuesResult queuesResult = serviceBusContract.listQueues(options);
    List<QueueInfo> list = queuesResult.getItems();

    for (QueueInfo info : list)
    {
        System.out.println("Queue name: " + info.getPath());
    }

似乎 ListQueuesOptions 应该修改检索队列的方式,并且确实如此。将 top 设置为 20 并跳至 0 给出第一个 20,将 top 设置为 40 并跳至 20 则为第二个 20,依此类推。但是如果我运行上面的代码,我仍然只打印 100 个队列。由于某种原因,它是否限制在 100 个?

我知道我可能只是在 100 次迭代中继续调用 listQueues 并计数以查看我是否达到 100,然后再次运行它,但这是一个非常奇怪的问题,所以我想我会问,因为文档是'这不是很清楚。

谢谢!

4

2 回答 2

2

您可以为 top 设置的最大值为 100。您需要每次要求批量 100。使用跳过获取下一批。

于 2013-06-21T16:54:04.040 回答
0

您是否尝试过启动 fiddler 或 wireshark 之类的东西来检查对请求的响应?我检查了列表队列的 API ( http://msdn.microsoft.com/en-us/library/windowsazure/hh780759.aspx ) 并没有看到任何分页行为,所以我不禁猜测它返回整个列表(根据文档以 AtomPub 格式),然后由 java SDK 解析结果。

那么这可能是您正在使用的 SDK 中的错误吗?

于 2013-06-20T19:59:32.840 回答