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