重置Azure存储队列消息的可见性

Reset visibility of Azure Storage Queue message

我的情况是:我有一个Azure存储队列,可以随时传入消息。 如果我在该队列中有10个项目,则必须按顺序处理它们。 我正在使用c#和Windows Azure存储SDK。

如果第一个项目在2秒后失败,则它在队列中保持不可见状态又持续28秒(默认为30秒不可见)。

现在,我的工作人员将继续检查队列中的消息并按时进行处理。 如果队列消息失败,它将保持不可见,因此在重试第一条消息之前将处理下一个队列项目。

对于任何需要按顺序处理项目的队列的人来说,这似乎是真正的基本功能。

不,我不能将超时设置为较小的值,因为任务可能需要不同的时间长度。


George,如果您正在寻找按顺序处理项目的消息传递队列解决方案,则应考虑使用Azure Service Bus队列:

As a solution architect/developer, you should consider using Service Bus queues when:

您的解决方案必须能够接收消息而不必轮询队列。使用服务总线,可以通过使用长轮询接收操作来实现,该操作使用服务总线支持的基于TCP的协议。

您的解决方案需要队列提供有保证的先进先出(FIFO)有序交付。

您希望在Azure和Windows Server(私有云)上获得对称体验。
有关更多信息,请参见Windows Server的服务总线。

您的解决方案必须能够支持自动重复检测。

有一篇很好的文章比较了存储队列和服务总线:https://docs.microsoft.com/zh-cn/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared -相反,您可能会发现后者更适合您的情况。