如何避免Windows Azure队列中的竞争条件

kis*_*ore 3 azure azure-storage

我们有一个Queue和多个具有相同worker角色的实例,用于读取队列中的消息.每条消息的处理速度非常快.我们如何避免两个实例尝试在完全相同的时间点从队列中读取相同消息的情况.

Pau*_*ner 7

如果您遵循读取和删除模式,则多个客户端同时访问Azure存储队列时不会遇到任何问题:

该消息不会自动从队列中删除,但在检索到该消息后,该visibilitytimeout参数指定的时间间隔对其他客户端不可见.

资料来源:http://msdn.microsoft.com/en-us/library/windowsazure/dd179474.aspx

队列的性质要求队列头部的每个操作都必须是原子的.在队列作为服务的情况下,如果多个客户端可能执行导致重叠读取的并发操作,则队列将完全不可用.