Azure队列唯一消息

| 我想确保我不会多次在队列中插入消息。我可以使用任何ID /名称来强制唯一性吗?     
已邀请:
Azure队列不能确保消息顺序和消息唯一性。邮件将被“至少处理一次”,但是没有什么可以确保它不会被处理两次,因此它不能确保“最多一次”。 您应该准备两次收到相同的消息。您可以在邮件正文中添加一个ID作为数据的一部分。     
vtortola几乎涵盖了它,但是我想为为什么至少要一次交付添加更多细节。 当您读取队列项目时,它不会从队列中删除;相反,它变得不可见,但仍在队列中。该隐身时间段默认为30秒(最多2小时)。在这段时间内,使项目脱离队列的代码有那么多时间来处理队列消息中的任何命令并删除队列项目。 假设在达到超时期限之前删除了队列项目,那么一切都很好。但是:一旦达到超时期限,该队列项目将再次变为可见,并且保存该队列项目的代码可能不再将其删除。在这种情况下,其他人可以读取相同的队列消息并重新处理该消息。 由于这个事实,队列消息可能会超时,并可能重新出现: 队列处理必须是幂等的-对队列消息进行的操作必须产生相同的结果(例如渲染照片的缩略图)。 您需要考虑超时调整。您可能会发现命令有效,但是处理时间过长(也许您的45秒缩略图呈现代码在有人上载25MP图像之前工作正常) 您需要考虑有毒消息-永远不会正确处理的消息。可能它们导致引发异常或具有某种无效条件,从而导致消息处理器中止处理,从而导致消息最终重新出现在队列中。有一个称为DequeueCount的属性-考虑在读取队列项目时查看该属性,如果等于3,则将该消息推送到表或Blob中,并向自己发送通知以花费一些时间来离线调试该消息。 获取队列低级REST API的更多详细信息在这里。这将使您更深入地了解Windows Azure队列消息处理。     
您可能想尝试服务总线队列     

要回复问题请先登录注册