Azure队列GetMessagesAsync未获得结果

Azure队列GetMessagesAsync未获得结果,azure,queue,azure-storage,azure-queues,Azure,Queue,Azure Storage,Azure Queues,我尝试从Azure队列中获取每个请求的32条消息 queue.ApproximateMessageCount; 这个代码给出了1509的结果。告诉我连接正常并且有记录。此外,我在队列中签入,它确实有1509条记录。 但是当我试图检索记录时,我没有得到任何记录。 我做了以下工作: var messages = await queue.GetMessagesAsync(configuration.MessageBatchSize); if (!messages.Any()) { retur

我尝试从Azure队列中获取每个请求的32条消息

queue.ApproximateMessageCount;
这个代码给出了1509的结果。告诉我连接正常并且有记录。此外,我在队列中签入,它确实有1509条记录。 但是当我试图检索记录时,我没有得到任何记录。 我做了以下工作:

var messages = await queue.GetMessagesAsync(configuration.MessageBatchSize);
if (!messages.Any()) {
    return;
}
它总是进入if并返回。
这里发生了什么,我遗漏了什么?

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

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

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

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

queue.ApproximateMessageCount;
如果您无法通过,
GetMessagesAsync(numberOfMessages)
检索消息,则它表示当前QueueClient无法使用或不可见所有消息

var cloudQueueMessages = await cloudQueue.GetMessagesAsync(numberOfMessages);
您可以在一段时间后尝试轮询队列,以查看消息是否返回到表面


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

队列中的所有消息都可能已排队吗?如果消息已排队,则其正确性会降低吗?计数不应该显示1509的计数,对吗?不正确。退出队列的消息仍在队列中,因此它们的计数包含在近似消息计数中。只有当消息被删除时,它才会消失。要以批处理模式接收消息,必须为此配置队列(EnableBatchedOperations设置为true)