我想确保不会多次向队列插入消息。我可以使用任何ID /名称来强制执行唯一性吗?
答案 0 :(得分:11)
vtortola几乎涵盖了它,但我想更多地详细说明为什么至少一次交付。
当您读取队列项时,它不会从队列中删除;相反,它变得不可见但保留在队列中。隐身期限默认为30秒(最长:2小时)。在此期间,从队列中获取该项目的代码有足够的时间处理队列消息中的任何命令并删除队列项。
假设在达到超时时间之前删除了队列项,一切都很顺利。但是:一旦达到超时时间,队列项将再次可见,并且保存队列项的代码可能不再删除它。在这种情况下,其他人可以读取相同的队列消息并重新处理该消息。
由于队列消息可以超时,并且可以重新出现:
有关get-queue低级REST API的更多详细信息是here。这将使您更深入地了解Windows Azure队列消息处理。
答案 1 :(得分:8)
Azure队列无法确保邮件顺序和邮件唯一性。消息将被“至少一次”处理,但没有任何东西可以确保它不会被处理两次,因此它不能确保“最多一次”。
您应该准备两次收到相同的消息。您可以在邮件正文中添加ID作为数据的一部分。
答案 2 :(得分:0)
您可能想尝试Service Bus Queue