我的方案:我有一个Azure存储队列,可以随时进入消息 . 如果我在该队列中有10个项目,则必须按顺序处理它们 . 我正在使用c#和windows azure存储SDK .
如果第一个项目在2秒之后失败,则它在队列中保持不可见另外28秒(默认情况下为30秒隐身) .
现在,我的工作人员将继续检查队列中的消息并在何时处理它们 . 如果队列消息失败,它将保持不可见,因此在重试第一条消息之前将处理下一个队列项 .
对于需要按顺序处理项目的队列的任何人来说,这似乎是非常基本的功能 .
不,我无法将超时设置为较小的量,因为任务可能需要不同的时间长度 .
1 回答
George,如果您正在寻找按顺序处理项目的消息队列解决方案,您应该考虑使用 Azure Service Bus Queues :
您的解决方案必须能够接收消息而无需轮询队列 . 使用Service Bus,可以通过使用Service Bus支持的基于TCP的协议使用长轮询接收操作来实现 .
Your solution requires the queue to provide a guaranteed first-in-first-out (FIFO) ordered delivery .
您希望在Azure和Windows Server(私有 Cloud )上获得对称体验 . 有关更多信息,请参阅Windows Server的Service Bus .
您的解决方案必须能够支持自动重复检测 .
有一篇很好的文章比较存储队列和服务总线:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted,您可能会发现后者更适合您的情况 .