我尝试从Azure Queue每个请求获得32封邮件。
numpy.ndarray
这段代码给了我1509的结果。告诉我连接没问题,它有记录。我也在队列中确实有1509条记录。 但是当我尝试检索记录时,我没有得到任何记录。 我做了以下事情:
queue.ApproximateMessageCount;
总是在if和return中。 这里发生了什么,我错过了什么?
答案 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);
您可以在一段时间后尝试轮询队列,以查看消息是否再次浮出水面。
请注意,建议为任何要出队的消息设置足够的可见性超时,以避免无限期饥饿:)