将能见度设置为7天意味着自动删除天蓝色队列?

时间:2013-12-22 09:57:49

标签: azure azure-storage azure-storage-queues

似乎新的azure SDK将visibilitytimeout扩展到< = 7天。我知道默认情况下,当我向azure队列添加消息时,实时时间是7天。当我收到消息时,将visibilitytimeout设置为7天。这是否意味着如果我不关心消息可靠,我不需要删除此消息?该消息将在7天后消失。

我想采取这种方式,因为DeleteMessage非常慢。如果我不删除邮件,它是否对GetMessage的性能有任何影响?

2 个答案:

答案 0 :(得分:1)

根据Get Messages的文档,我相信肯定可以将VisibilityTimeout期限设置为7天,这样邮件只能获取一次。但是,我发现这种方法存在一些问题,而不仅仅是在完成该过程后删除消息:

  • 当您收到消息并开始处理消息并以某种方式失败时会发生什么?如果将可见性超时设置为7天,则该消息将永远不会再次出现在队列中,因此它应该执行的过程永远不会完成。
  • 即使消息被隐藏,它仍然在队列中,因此您继续为该消息产生存储费用。即使成本微不足道,但为什么在你不需要的时候保留信息。
  • 许多系统依赖队列的Approximate Messages Count属性来检查队列中的消息执行的进程的运行状况。请注意,即使您隐藏了消息,它仍然在队列中,因此将包含在队列中的总消息数中。因此,如果您正在构建一个依赖于此进行运行状况检查的系统,您将始终发现您的系统不健康,因为您永远不会删除这些消息。

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

答案 1 :(得分:0)

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

有关日志记录的更多信息,请查看以下文章: http://blogs.msdn.com/b/windowsazurestorage/archive/tags/analytics+2d00+logging+_2600_amp_3b00_+metrics/ http://msdn.microsoft.com/en-us/library/azure/hh343262.aspx

有关客户端日志记录的信息也可以在这篇文章中找到:e客户端日志记录 - 您可以在此博客文章中了解更多信息。 http://blogs.msdn.com/b/windowsazurestorage/archive/2013/09/07/announcing-storage-client-library-2-1-rtm.aspx

请让我知道你的发现。

杰森