Azure队列中的sdk getMessages方法无法按预期工作

时间:2016-06-10 08:35:33

标签: node.js azure-queues azure-storage-queues

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

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

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

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

2 个答案:

答案 0 :(得分:0)

如上所述here,无法保证FIFO排序。所以情况可能就是这样,大多数情况下消息是按FIFO顺序获取的,但这并不能保证,Azure可以按照最适合其实现的顺序给你消息。

  

通常会将消息添加到队列末尾并进行检索   从队列的前面,虽然先进先出(FIFO)   行为无法保证。

答案 1 :(得分:0)

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