我们有一个Queue和多个具有相同辅助角色的实例,用于读取队列中的消息。每条消息的处理速度非常快。我们如何避免两个实例在完全相同的时间点尝试从队列中读取相同消息的情况。
答案 0 :(得分:6)
如果您遵循“读取 - 删除”模式,则多个客户端同时访问Azure存储队列时不会出现任何问题:
邮件不会自动从队列中删除,但在检索完邮件后,在
visibilitytimeout
参数指定的时间间隔内,其他客户端无法看到该邮件。
来源:http://msdn.microsoft.com/en-us/library/windowsazure/dd179474.aspx
队列的性质要求队列头部的每个操作都必须是原子的。在队列作为服务的情况下,如果多个客户端可能执行导致重叠读取的并发操作,则队列将完全无法使用。
答案 1 :(得分:2)