Azure Queue GetMessagesAsync无法获得结果

时间:2018-04-24 11:13:30

标签: azure queue azure-storage azure-queues

我尝试从Azure Queue每个请求获得32封邮件。

numpy.ndarray

这段代码给了我1509的结果。告诉我连接没问题,它有记录。我也在队列中确实有1509条记录。 但是当我尝试检索记录时,我没有得到任何记录。 我做了以下事情:

queue.ApproximateMessageCount;

总是在if和return中。 这里发生了什么,我错过了什么?

2 个答案:

答案 0 :(得分:0)

这样做,在批处理模式下接收消息,我使用这种代码:

var messages = await queueClient?.ReceiveBatchAsync(Max_Messages);
foreach (var message in messages)
{
    await dispatcher.Dispatch(message); // do something with each message
}

但是,为了使用ReceiveBatchAsync接收消息,必须使用EnableBatchedOperations标志将队列配置为true。

答案 1 :(得分:0)

ApproximateMessageCount属性表示该特定时刻队列中可用消息的总数。它并不表示所有消息(请求中的 max#32条消息)都已准备好出队。您可以使用此属性来推断队列中有多少消息。

queue.ApproximateMessageCount;

如果您无法通过GetMessagesAsync(numberOfMessages)检索消息,则表明当前QueueClient的所有消息都不可用或不可见。

var cloudQueueMessages = await cloudQueue.GetMessagesAsync(numberOfMessages);

您可以在一段时间后尝试轮询队列,以查看消息是否再次浮出水面。

请注意,建议为任何要出队的消息设置足够的可见性超时,以避免无限期饥饿:)