我正在尝试使用ScheduledEnqueueTimeUtc来调度消息以供将来处理,但Peek只返回活动和延迟消息。
这是我用来偷看消息的代码:
public static async Task<IEnumerable<BrokeredMessage>> GetMessagesAsync(string connectionString, string queueName, int take)
{
var queue = QueueClient.CreateFromConnectionString(connectionString, queueName);
return await queue.PeekBatchAsync(take).ConfigureAwait(false);
}不会返回ScheduledEnqueueTimeUtc设置为将来某个时间的计划消息。
在预定时间过后,我收到State = Scheduled的消息,但这不是我所期望的。
从名称"ScheduledEnqueueTimeUtc“可以看出,消息是不可见的,因为它还没有入队。然而,如果我可以有无限数量的预定消息挂在那里而不能看到它们,这会让我感到困扰。
是我弄错了,还是有其他方法可以获得未来的预定消息?
发布于 2017-09-06 19:06:31
我发现了问题:我将计划好的消息发送到一个主题,而不是一个队列。
显然,这意味着消息在预定时间之前在订阅队列中不可见。
使用常规队列,Peek按预期工作,并返回活动、延迟和计划的消息,正如人们所预期的那样:-)
https://stackoverflow.com/questions/46070962
复制相似问题