1

我在 Azure Queue 中创建了一个队列,并将其中的两个项目排入队列。使用 nodejs sdk,我创建了一个每 5 秒执行一次的计时器并调用:

azure.createQueueService("precondevqueues", "<key>").getMessages(queueName, {numOfMessages : 1, visibilityTimeout: 1 }, callback)

我希望队列中的两个相同的消息每 5 秒出现一次,但似乎并非如此。此调用的输出在两条消息之间交替。

这不应该是这种情况,因为 visibilityTimeout 设置为 1,因此在 1 秒后,在第一次调用中出列的消息应该在下一次 getMessage 调用之前再次可见。

4

2 回答 2

0

如此处所述,不保证 FIFO 排序。因此,大多数情况下,消息都是按 FIFO 顺序获取的,但这并不能保证,Azure 可以按照最适合其实施的顺序为您提供消息。

消息通常被添加到队列的末尾并从队列的前面检索,尽管不能保证先进先出 (FIFO) 行为。

于 2016-06-10T08:48:18.583 回答
0

啊哈我的错!我再次非常仔细地阅读了 getMessages 文档,并意识到 getMessages 使消息出列,但在队列之外保留了一个不可见的副本。如果消息处理器在可见性超时到期之前没有删除消息,则副本将重新排列在消息中,因此它们会进入队列的末尾。

于 2016-06-10T11:04:51.290 回答