将visibilitytimeout设置为7天意味着自动删除azure队列?

将visibilitytimeout设置为7天意味着自动删除azure队列?,azure,azure-storage,azure-storage-queues,Azure,Azure Storage,Azure Storage Queues,新的azure SDK似乎将visibilitytimeout扩展到了,基于的文档,我相信可以将visibilitytimeout期限设置为7天,以便只获取一次消息。但是,我发现这种方法存在一些问题,而不仅仅是在流程完成后删除消息: 当您收到消息并开始处理它时,会发生什么情况?不知为什么,该过程失败了?如果将可见性超时设置为7天,则消息将不会再次出现在队列中,因此它应该执行的进程将永远不会完成 即使消息是隐藏的,它仍然在队列中,因此您将继续为此消息支付存储费用。虽然花费很小,但是为什么在你不需

新的azure SDK似乎将visibilitytimeout扩展到了,基于的文档,我相信可以将
visibilitytimeout
期限设置为7天,以便只获取一次消息。但是,我发现这种方法存在一些问题,而不仅仅是在流程完成后删除消息:

  • 当您收到消息并开始处理它时,会发生什么情况?不知为什么,该过程失败了?如果将可见性超时设置为7天,则消息将不会再次出现在队列中,因此它应该执行的进程将永远不会完成
  • 即使消息是隐藏的,它仍然在队列中,因此您将继续为此消息支付存储费用。虽然花费很小,但是为什么在你不需要的时候保留信息呢
  • 许多系统依赖于队列的近似消息计数属性来检查由队列中的消息执行的进程的运行状况。请注意,即使将消息隐藏,它仍在队列中,因此将包含在队列中的消息总数中。因此,如果您正在构建一个依赖于此进行健康检查的系统,您将始终发现您的系统不健康,因为您从未删除消息

我很想知道为什么你发现删除邮件非常慢。根据我的经验,这相当快。您是如何监控邮件删除的?

我认为您应该深入了解删除速度慢的原因,而不是绕过这个问题。您是否启用了日志,并查看了所有队列操作中的E2Relatiency和serverlatency数。理想情况下,对于您的所有队列操作,您不应该看到两者之间的巨大差异。如果您确实看到了很大的差异,那么这意味着客户机上发生了一些事情,您应该进一步调查

有关日志记录的更多信息,请参阅以下文章:

关于客户端日志记录的信息也可以在这篇文章中找到:e客户端日志记录-您可以在这篇博客文章中了解更多

请告诉我你发现了什么


杰森

谢谢你的回复。你的观点确实有效。我有一个hugh队列,希望尽可能快地获取消息,例如每秒2000条。最初的模式是Get Delete。分析之后,我发现大部分时间都在删除。这就是我想采用这种方法的原因。要删除邮件,您需要两件事:
邮件Id
收到
邮件时得到的
收条。一个可能的解决方案是通过一些后台进程进行删除,这样您的主进程就不会受到影响。